diff --git a/goldens/public-api/angular_devkit/core/index.api.md b/goldens/public-api/angular_devkit/core/index.api.md index 748faf2bbeb4..a6810f5a8da8 100644 --- a/goldens/public-api/angular_devkit/core/index.api.md +++ b/goldens/public-api/angular_devkit/core/index.api.md @@ -553,7 +553,7 @@ function oneLine(strings: TemplateStringsArray, ...values: any[]): string; // @public (undocumented) function parseJsonPointer(pointer: JsonPointer): string[]; -// @public (undocumented) +// @public export class PartiallyOrderedSet { // (undocumented) [Symbol.iterator](): IterableIterator; diff --git a/packages/angular_devkit/architect/src/jobs/create-job-handler.ts b/packages/angular_devkit/architect/src/jobs/create-job-handler.ts index 06aabd61e5f3..6363b7b70767 100644 --- a/packages/angular_devkit/architect/src/jobs/create-job-handler.ts +++ b/packages/angular_devkit/architect/src/jobs/create-job-handler.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { BaseException, JsonValue, isPromise, logging } from '@angular-devkit/core'; +import { BaseException, JsonValue, logging } from '@angular-devkit/core'; import { Observable, Observer, @@ -27,6 +27,11 @@ import { JobOutboundMessageKind, } from './api'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function isPromise(obj: any): obj is Promise { + return !!obj && typeof obj.then === 'function'; +} + export class ChannelAlreadyExistException extends BaseException { constructor(name: string) { super(`Channel ${JSON.stringify(name)} already exist.`); diff --git a/packages/angular_devkit/core/src/json/schema/interface.ts b/packages/angular_devkit/core/src/json/schema/interface.ts index 10f89efaf94e..8974746319f7 100644 --- a/packages/angular_devkit/core/src/json/schema/interface.ts +++ b/packages/angular_devkit/core/src/json/schema/interface.ts @@ -85,7 +85,7 @@ export interface SchemaRegistry { /** * Add a transformation step before the validation of any Json. * @param {JsonVisitor} visitor The visitor to transform every value. - * @param {JsonVisitor[]} deps A list of other visitors to run before. + * @param {JsonVisitor[]} deps [Deprecated] A list of other visitors to run before. Add transforms in the desired execution order instead. */ addPreTransform(visitor: JsonVisitor, deps?: JsonVisitor[]): void; @@ -94,7 +94,7 @@ export interface SchemaRegistry { * after the POST, so if transformations are not compatible with the Schema it will not result * in an error. * @param {JsonVisitor} visitor The visitor to transform every value. - * @param {JsonVisitor[]} deps A list of other visitors to run before. + * @param {JsonVisitor[]} deps [Deprecated] A list of other visitors to run before. Add transforms in the desired execution order instead. */ addPostTransform(visitor: JsonVisitor, deps?: JsonVisitor[]): void; } diff --git a/packages/angular_devkit/core/src/json/schema/registry.ts b/packages/angular_devkit/core/src/json/schema/registry.ts index 11632b64f86a..d433a41bd460 100644 --- a/packages/angular_devkit/core/src/json/schema/registry.ts +++ b/packages/angular_devkit/core/src/json/schema/registry.ts @@ -13,7 +13,7 @@ import * as https from 'node:https'; import * as Url from 'node:url'; import { Observable, from, isObservable, lastValueFrom } from 'rxjs'; import { BaseException } from '../../exception'; -import { PartiallyOrderedSet, deepCopy } from '../../utils'; +import { PartiallyOrderedSet } from '../../utils'; import { JsonArray, JsonObject, JsonValue, isJsonObject } from '../utils'; import { JsonPointer, @@ -171,7 +171,7 @@ export class CoreSchemaRegistry implements SchemaRegistry { /** * Add a transformation step before the validation of any Json. * @param {JsonVisitor} visitor The visitor to transform every value. - * @param {JsonVisitor[]} deps A list of other visitors to run before. + * @param {JsonVisitor[]} deps [Deprecated] A list of other visitors to run before. Add transforms in the desired execution order instead. */ addPreTransform(visitor: JsonVisitor, deps?: JsonVisitor[]): void { this._pre.add(visitor, deps); @@ -182,7 +182,7 @@ export class CoreSchemaRegistry implements SchemaRegistry { * after the POST, so if transformations are not compatible with the Schema it will not result * in an error. * @param {JsonVisitor} visitor The visitor to transform every value. - * @param {JsonVisitor[]} deps A list of other visitors to run before. + * @param {JsonVisitor[]} deps [Deprecated] A list of other visitors to run before. Add transforms in the desired execution order instead. */ addPostTransform(visitor: JsonVisitor, deps?: JsonVisitor[]): void { this._post.add(visitor, deps); @@ -257,7 +257,7 @@ export class CoreSchemaRegistry implements SchemaRegistry { } } - const schemaCopy = deepCopy(validate.schema as JsonObject); + const schemaCopy = structuredClone(validate.schema as JsonObject); visitJsonSchema(schemaCopy, visitor); return schemaCopy; diff --git a/packages/angular_devkit/core/src/utils/lang.ts b/packages/angular_devkit/core/src/utils/lang.ts index ffa8f2d034ed..ca59b945cbc8 100644 --- a/packages/angular_devkit/core/src/utils/lang.ts +++ b/packages/angular_devkit/core/src/utils/lang.ts @@ -10,6 +10,8 @@ /** * Determine if the argument is shaped like a Promise + * + * @deprecated Use `typeof obj?.then === 'function'` instead. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function isPromise(obj: any): obj is Promise { diff --git a/packages/angular_devkit/core/src/utils/object.ts b/packages/angular_devkit/core/src/utils/object.ts index cc0218023bb0..9e7e5b78d3ad 100644 --- a/packages/angular_devkit/core/src/utils/object.ts +++ b/packages/angular_devkit/core/src/utils/object.ts @@ -8,6 +8,9 @@ const copySymbol = Symbol(); +/** + * @deprecated Use `structuredClone` instead. + */ export function deepCopy(value: T): T { if (Array.isArray(value)) { return value.map((o) => deepCopy(o)) as unknown as T; diff --git a/packages/angular_devkit/core/src/utils/partially-ordered-set.ts b/packages/angular_devkit/core/src/utils/partially-ordered-set.ts index 297210c6ff89..21e3fb5c5410 100644 --- a/packages/angular_devkit/core/src/utils/partially-ordered-set.ts +++ b/packages/angular_devkit/core/src/utils/partially-ordered-set.ts @@ -19,6 +19,9 @@ export class CircularDependencyFoundException extends BaseException { } } +/** + * @deprecated Use standard arrays and ensure correct insertion order instead. + */ export class PartiallyOrderedSet { private _items = new Map>(); diff --git a/packages/angular_devkit/schematics/tools/schema-option-transform.ts b/packages/angular_devkit/schematics/tools/schema-option-transform.ts index f8198039b7ec..79abe6da6af0 100644 --- a/packages/angular_devkit/schematics/tools/schema-option-transform.ts +++ b/packages/angular_devkit/schematics/tools/schema-option-transform.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { deepCopy, schema } from '@angular-devkit/core'; +import { schema } from '@angular-devkit/core'; import { Observable, from, of as observableOf } from 'rxjs'; import { first, map, mergeMap } from 'rxjs/operators'; import { FileSystemSchematicContext, FileSystemSchematicDescription } from './description'; @@ -28,7 +28,7 @@ export function validateOptionsWithSchema(registry: schema.SchemaRegistry) { context?: FileSystemSchematicContext, ): Observable => { // Prevent a schematic from changing the options object by making a copy of it. - options = deepCopy(options); + options = structuredClone(options); const withPrompts = context ? context.interactive : true;