From 769480e041e1eebffea730ab455720db75829a0e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 13 Mar 2025 05:04:09 +0000 Subject: [PATCH 001/160] build: update dependency aspect_rules_ts to v3.5.1 --- WORKSPACE | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 9ea78d517bf9..4aab385c07ce 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -199,9 +199,9 @@ npm_repositories() http_archive( name = "aspect_rules_ts", - sha256 = "4263532b2fb4d16f309d80e3597191a1cb2fb69c19e95d91711bd6b97874705e", - strip_prefix = "rules_ts-3.5.0", - url = "https://github.com/aspect-build/rules_ts/releases/download/v3.5.0/rules_ts-v3.5.0.tar.gz", + sha256 = "d584e4bc80674d046938563678117d17df962fe105395f6b1efe2e8a248b8100", + strip_prefix = "rules_ts-3.5.1", + url = "https://github.com/aspect-build/rules_ts/releases/download/v3.5.1/rules_ts-v3.5.1.tar.gz", ) load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") From af829b4365019869cd2647cd45925332bdfb5c3b Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 13 Mar 2025 10:04:33 +0000 Subject: [PATCH 002/160] docs: release notes for the v18.2.15 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index baa3eef1ae64..7c6a08044d66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 18.2.15 (2025-03-13) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | +| [255c8a50d](https://github.com/angular/angular-cli/commit/255c8a50d2214747c8121e963afcd96cbff39293) | fix | update babel packages | + + + # 20.0.0-next.1 (2025-03-13) From ab68a05063f75db5bb2a1da7589daf5e2a3a6b6f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 13 Mar 2025 10:33:22 +0000 Subject: [PATCH 003/160] docs: release notes for the v19.2.3 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c6a08044d66..465699c4e6e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 19.2.3 (2025-03-13) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | +| [5a739820b](https://github.com/angular/angular-cli/commit/5a739820be5cc7cb25e159a1f2283db92e741f78) | fix | update babel packages | + + + # 18.2.15 (2025-03-13) From 09d3ced9f4fc26ef3a275387072d24fa0d71e623 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 13 Mar 2025 11:53:25 +0000 Subject: [PATCH 004/160] docs: release notes for the v17.3.13 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 465699c4e6e7..5578999cfb84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 17.3.13 (2025-03-13) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | +| [22901df02](https://github.com/angular/angular-cli/commit/22901df0261812a3408ff9d7a7690bf6b87ec2a3) | fix | update babel packages | + + + # 19.2.3 (2025-03-13) From b9591eb4b6d86283d133b3a2c20064e0b80a0670 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 13 Mar 2025 13:17:08 +0000 Subject: [PATCH 005/160] docs(@angular-devkit/build-angular): update `forceEsbuild` option description Esbuild builder is stable and is no longer in developer preview. --- .../build_angular/src/builders/dev-server/schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/schema.json b/packages/angular_devkit/build_angular/src/builders/dev-server/schema.json index bb7a87a5d2f7..495f244b1722 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/schema.json +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/schema.json @@ -108,7 +108,7 @@ }, "forceEsbuild": { "type": "boolean", - "description": "Force the development server to use the 'browser-esbuild' builder when building. This is a developer preview option for the esbuild-based build system.", + "description": "Force the development server to use the 'browser-esbuild' builder when building.", "default": false }, "prebundle": { From cdfc50c29a2aa6f32d172b505a0ef09e563dfc59 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 13 Mar 2025 12:53:28 +0000 Subject: [PATCH 006/160] feat(@angular/ssr): stabilize `AngularNodeAppEngine`, `AngularAppEngine`, and `provideServerRouting` APIs This commit promotes the `AngularNodeAppEngine`, `AngularAppEngine`, and `provideServerRouting` APIs from dev preview to stable. These APIs enhance server-side rendering (SSR) capabilities in Angular applications, improving routing and server integration for better performance and reliability. --- packages/angular/ssr/node/src/app-engine.ts | 2 -- packages/angular/ssr/node/src/handler.ts | 2 -- packages/angular/ssr/node/src/module.ts | 1 - packages/angular/ssr/node/src/request.ts | 1 - packages/angular/ssr/node/src/response.ts | 1 - packages/angular/ssr/src/app-engine.ts | 2 -- packages/angular/ssr/src/handler.ts | 2 -- packages/angular/ssr/src/routes/route-config.ts | 11 ----------- 8 files changed, 22 deletions(-) diff --git a/packages/angular/ssr/node/src/app-engine.ts b/packages/angular/ssr/node/src/app-engine.ts index a59502ee47a8..f8fd03a8e21c 100644 --- a/packages/angular/ssr/node/src/app-engine.ts +++ b/packages/angular/ssr/node/src/app-engine.ts @@ -18,8 +18,6 @@ import { createWebRequestFromNodeRequest } from './request'; * * @remarks This class should be instantiated once and used as a singleton across the server-side * application to ensure consistent handling of rendering requests and resource management. - * - * @developerPreview */ export class AngularNodeAppEngine { private readonly angularAppEngine = new AngularAppEngine(); diff --git a/packages/angular/ssr/node/src/handler.ts b/packages/angular/ssr/node/src/handler.ts index be67c1dcb339..89452b3099b1 100644 --- a/packages/angular/ssr/node/src/handler.ts +++ b/packages/angular/ssr/node/src/handler.ts @@ -16,7 +16,6 @@ import type { IncomingMessage, ServerResponse } from 'node:http'; * @param next - A callback function that signals the completion of the middleware or forwards the error if provided. * * @returns A Promise that resolves to void or simply void. The handler can be asynchronous. - * @developerPreview */ export type NodeRequestHandlerFunction = ( req: IncomingMessage, @@ -66,7 +65,6 @@ export type NodeRequestHandlerFunction = ( * res.send('Hello from Fastify with Node Next Handler!'); * })); * ``` - * @developerPreview */ export function createNodeRequestHandler(handler: T): T { (handler as T & { __ng_node_request_handler__?: boolean })['__ng_node_request_handler__'] = true; diff --git a/packages/angular/ssr/node/src/module.ts b/packages/angular/ssr/node/src/module.ts index f53943a89727..bd52455940a2 100644 --- a/packages/angular/ssr/node/src/module.ts +++ b/packages/angular/ssr/node/src/module.ts @@ -23,7 +23,6 @@ import { fileURLToPath } from 'node:url'; * * @param url The URL of the module to check. This should typically be `import.meta.url`. * @returns `true` if the provided URL represents the main entry point, otherwise `false`. - * @developerPreview */ export function isMainModule(url: string): boolean { return url.startsWith('file:') && argv[1] === fileURLToPath(url); diff --git a/packages/angular/ssr/node/src/request.ts b/packages/angular/ssr/node/src/request.ts index 78ec7f2ef712..51331a18cc35 100644 --- a/packages/angular/ssr/node/src/request.ts +++ b/packages/angular/ssr/node/src/request.ts @@ -27,7 +27,6 @@ const HTTP2_PSEUDO_HEADERS = new Set([':method', ':scheme', ':authority', ':path * * @param nodeRequest - The Node.js request object (`IncomingMessage` or `Http2ServerRequest`) to convert. * @returns A Web Standard `Request` object. - * @developerPreview */ export function createWebRequestFromNodeRequest( nodeRequest: IncomingMessage | Http2ServerRequest, diff --git a/packages/angular/ssr/node/src/response.ts b/packages/angular/ssr/node/src/response.ts index 8f26bc319361..56f091deed5f 100644 --- a/packages/angular/ssr/node/src/response.ts +++ b/packages/angular/ssr/node/src/response.ts @@ -19,7 +19,6 @@ import type { Http2ServerResponse } from 'node:http2'; * @param source - The web-standard `Response` object to stream from. * @param destination - The Node.js response object (`ServerResponse` or `Http2ServerResponse`) to stream into. * @returns A promise that resolves once the streaming operation is complete. - * @developerPreview */ export async function writeResponseToNodeResponse( source: Response, diff --git a/packages/angular/ssr/src/app-engine.ts b/packages/angular/ssr/src/app-engine.ts index c1e2e7fcd5a4..0ce5d23c30d1 100644 --- a/packages/angular/ssr/src/app-engine.ts +++ b/packages/angular/ssr/src/app-engine.ts @@ -19,8 +19,6 @@ import { joinUrlParts } from './utils/url'; * * @remarks This class should be instantiated once and used as a singleton across the server-side * application to ensure consistent handling of rendering requests and resource management. - * - * @developerPreview */ export class AngularAppEngine { /** diff --git a/packages/angular/ssr/src/handler.ts b/packages/angular/ssr/src/handler.ts index e375b327f829..5969e06907f5 100644 --- a/packages/angular/ssr/src/handler.ts +++ b/packages/angular/ssr/src/handler.ts @@ -12,7 +12,6 @@ * @param request - The incoming HTTP request object. * @returns A Promise resolving to a `Response` object, `null`, or directly a `Response`, * supporting both synchronous and asynchronous handling. - * @developerPreview */ export type RequestHandlerFunction = ( request: Request, @@ -39,7 +38,6 @@ export type RequestHandlerFunction = ( * const handler = toWebHandler(app); * export default createRequestHandler(handler); * ``` - * @developerPreview */ export function createRequestHandler(handler: RequestHandlerFunction): RequestHandlerFunction { (handler as RequestHandlerFunction & { __ng_request_handler__?: boolean })[ diff --git a/packages/angular/ssr/src/routes/route-config.ts b/packages/angular/ssr/src/routes/route-config.ts index 26f115ad6256..d0a2306134c6 100644 --- a/packages/angular/ssr/src/routes/route-config.ts +++ b/packages/angular/ssr/src/routes/route-config.ts @@ -24,7 +24,6 @@ const APP_SHELL_ROUTE = 'ng-app-shell'; /** * Identifies a particular kind of `ServerRoutesFeatureKind`. * @see {@link ServerRoutesFeature} - * @developerPreview */ enum ServerRoutesFeatureKind { AppShell, @@ -33,7 +32,6 @@ enum ServerRoutesFeatureKind { /** * Helper type to represent a server routes feature. * @see {@link ServerRoutesFeatureKind} - * @developerPreview */ interface ServerRoutesFeature { ɵkind: FeatureKind; @@ -44,7 +42,6 @@ interface ServerRoutesFeature { * Different rendering modes for server routes. * @see {@link provideServerRouting} * @see {@link ServerRoute} - * @developerPreview */ export enum RenderMode { /** Server-Side Rendering (SSR) mode, where content is rendered on the server for each request. */ @@ -61,7 +58,6 @@ export enum RenderMode { * Defines the fallback strategies for Static Site Generation (SSG) routes when a pre-rendered path is not available. * This is particularly relevant for routes with parameterized URLs where some paths might not be pre-rendered at build time. * @see {@link ServerRoutePrerenderWithParams} - * @developerPreview */ export enum PrerenderFallback { /** @@ -85,7 +81,6 @@ export enum PrerenderFallback { /** * Common interface for server routes, providing shared properties. - * @developerPreview */ export interface ServerRouteCommon { /** The path associated with this route. */ @@ -101,7 +96,6 @@ export interface ServerRouteCommon { /** * A server route that uses Client-Side Rendering (CSR) mode. * @see {@link RenderMode} - * @developerPreview */ export interface ServerRouteClient extends ServerRouteCommon { /** Specifies that the route uses Client-Side Rendering (CSR) mode. */ @@ -111,7 +105,6 @@ export interface ServerRouteClient extends ServerRouteCommon { /** * A server route that uses Static Site Generation (SSG) mode. * @see {@link RenderMode} - * @developerPreview */ export interface ServerRoutePrerender extends Omit { /** Specifies that the route uses Static Site Generation (SSG) mode. */ @@ -126,7 +119,6 @@ export interface ServerRoutePrerender extends Omit * @see {@link RenderMode} * @see {@link ServerRoutePrerender} * @see {@link PrerenderFallback} - * @developerPreview */ export interface ServerRoutePrerenderWithParams extends Omit { /** @@ -171,7 +163,6 @@ export interface ServerRoutePrerenderWithParams extends Omit('SERV * * @see {@link ServerRoute} * @see {@link withAppShell} - * @developerPreview */ export function provideServerRouting( routes: ServerRoute[], From 18e13e2ceed931d29aa5582980c7d6d1f66c9787 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 13 Mar 2025 14:29:06 +0000 Subject: [PATCH 007/160] feat(@schematics/angular): remove `--server-routing` option Server-side rendering (SSR) will always enable server routing when using the application builder. BREAKING CHANGE: `--server-routing` option has been removed from several schematics. Server routing will be used when using the application builder. --- .../ssr/schematics/ng-add/index_spec.ts | 1 - .../angular/ssr/schematics/ng-add/schema.json | 4 - .../schematics/angular/app-shell/index.ts | 39 ++---- .../angular/app-shell/index_spec.ts | 1 - .../schematics/angular/app-shell/schema.json | 5 - .../schematics/angular/application/index.ts | 1 - .../angular/application/index_spec.ts | 1 - .../angular/application/schema.json | 4 - packages/schematics/angular/ng-new/index.ts | 1 - .../schematics/angular/ng-new/schema.json | 4 - .../app/app.module.server.ts.template | 12 +- .../app/app.config.server.ts.template | 12 +- packages/schematics/angular/server/index.ts | 19 +-- .../schematics/angular/server/schema.json | 4 - .../server.ts.template | 67 ---------- packages/schematics/angular/ssr/index.ts | 119 ++++-------------- packages/schematics/angular/ssr/index_spec.ts | 112 ----------------- packages/schematics/angular/ssr/schema.json | 4 - .../angular/utility/project-targets.ts | 10 ++ .../prerender/discover-routes-ngmodule.ts | 36 ++---- .../prerender/discover-routes-standalone.ts | 10 +- .../build/prerender/http-requests-assets.ts | 2 +- .../express-engine-csp-nonce.ts | 2 +- .../express-engine-standalone.ts | 2 +- ...utput-mode-server-external-dependencies.ts | 2 +- ...outes-output-mode-server-i18n-base-href.ts | 2 +- ...routes-output-mode-server-i18n-sub-path.ts | 2 +- .../server-routes-output-mode-server-i18n.ts | 2 +- ...tes-output-mode-server-platform-neutral.ts | 2 +- .../server-routes-output-mode-server.ts | 2 +- ...er-routes-output-mode-static-http-calls.ts | 2 +- ...s-output-mode-static-i18n_APP_BASE_HREF.ts | 2 +- .../server-routes-output-mode-static.ts | 2 +- .../server-routes-preload-links.ts | 2 +- .../serve/ssr-http-requests-assets.ts | 2 +- .../legacy-cli/e2e/tests/vite/ssr-default.ts | 2 +- .../e2e/tests/vite/ssr-entry-express.ts | 2 +- .../e2e/tests/vite/ssr-entry-fastify.ts | 2 +- .../legacy-cli/e2e/tests/vite/ssr-entry-h3.ts | 2 +- .../e2e/tests/vite/ssr-entry-hono.ts | 2 +- .../e2e/tests/vite/ssr-error-stack.ts | 2 +- .../tests/vite/ssr-new-dep-optimization.ts | 2 +- .../vite/ssr-no-server-entry-sub-path.ts | 54 -------- .../legacy-cli/e2e/tests/vite/ssr-with-ssl.ts | 2 +- 44 files changed, 95 insertions(+), 469 deletions(-) delete mode 100644 packages/schematics/angular/ssr/files/application-builder-common-engine/server.ts.template delete mode 100644 tests/legacy-cli/e2e/tests/vite/ssr-no-server-entry-sub-path.ts diff --git a/packages/angular/ssr/schematics/ng-add/index_spec.ts b/packages/angular/ssr/schematics/ng-add/index_spec.ts index bdf5474e0d70..b93a509200b1 100644 --- a/packages/angular/ssr/schematics/ng-add/index_spec.ts +++ b/packages/angular/ssr/schematics/ng-add/index_spec.ts @@ -14,7 +14,6 @@ import { join } from 'node:path'; describe('@angular/ssr ng-add schematic', () => { const defaultOptions = { project: 'test-app', - serverRouting: false, }; const schematicRunner = new SchematicTestRunner( diff --git a/packages/angular/ssr/schematics/ng-add/schema.json b/packages/angular/ssr/schematics/ng-add/schema.json index f82d7373620b..2f0df90db22b 100644 --- a/packages/angular/ssr/schematics/ng-add/schema.json +++ b/packages/angular/ssr/schematics/ng-add/schema.json @@ -16,10 +16,6 @@ "description": "Skip the automatic installation of packages. You will need to manually install the dependencies later.", "type": "boolean", "default": false - }, - "serverRouting": { - "description": "Configure the server application to use the Angular Server Routing API and App Engine APIs (currently in Developer Preview).", - "type": "boolean" } }, "required": ["project"], diff --git a/packages/schematics/angular/app-shell/index.ts b/packages/schematics/angular/app-shell/index.ts index 725f6d126785..25b4094b51ca 100644 --- a/packages/schematics/angular/app-shell/index.ts +++ b/packages/schematics/angular/app-shell/index.ts @@ -27,9 +27,9 @@ import { } from '../utility/ast-utils'; import { applyToUpdateRecorder } from '../utility/change'; import { getAppModulePath, isStandaloneApp } from '../utility/ng-ast-utils'; +import { isUsingApplicationBuilder, targetBuildNotFoundError } from '../utility/project-targets'; import { findBootstrapApplicationCall, getMainFilePath } from '../utility/standalone/util'; -import { getWorkspace, updateWorkspace } from '../utility/workspace'; -import { Builders } from '../utility/workspace-models'; +import { getWorkspace } from '../utility/workspace'; import { Schema as AppShellOptions } from './schema'; const APP_SHELL_ROUTE = 'shell'; @@ -156,29 +156,6 @@ function getMetadataProperty(metadata: ts.Node, propertyName: string): ts.Proper return property; } -function addAppShellConfigToWorkspace(options: AppShellOptions): Rule { - return updateWorkspace((workspace) => { - const project = workspace.projects.get(options.project); - if (!project) { - return; - } - const buildTarget = project.targets.get('build'); - if ( - buildTarget?.builder === Builders.Application || - buildTarget?.builder === Builders.BuildApplication - ) { - // Application builder configuration. - const prodConfig = buildTarget.configurations?.production; - if (!prodConfig) { - throw new SchematicsException( - `A "production" configuration is not defined for the "build" builder.`, - ); - } - prodConfig.appShell = true; - } - }); -} - function addServerRoutes(options: AppShellOptions): Rule { return async (host: Tree) => { // The workspace gets updated so this needs to be reloaded @@ -359,17 +336,21 @@ export default function (options: AppShellOptions): Rule { const browserEntryPoint = await getMainFilePath(tree, options.project); const isStandalone = isStandaloneApp(tree, browserEntryPoint); + const workspace = await getWorkspace(tree); + const project = workspace.projects.get(options.project); + if (!project) { + throw targetBuildNotFoundError(); + } + return chain([ validateProject(browserEntryPoint), schematic('server', options), - ...(options.serverRouting + ...(isUsingApplicationBuilder(project) ? [noop()] : isStandalone ? [addStandaloneServerRoute(options)] : [addServerRoutes(options)]), - options.serverRouting - ? addServerRoutingConfig(options, isStandalone) - : addAppShellConfigToWorkspace(options), + addServerRoutingConfig(options, isStandalone), schematic('component', { name: 'app-shell', module: 'app.module.server.ts', diff --git a/packages/schematics/angular/app-shell/index_spec.ts b/packages/schematics/angular/app-shell/index_spec.ts index 09fbe4ba6e17..77c9742a73ec 100644 --- a/packages/schematics/angular/app-shell/index_spec.ts +++ b/packages/schematics/angular/app-shell/index_spec.ts @@ -19,7 +19,6 @@ describe('App Shell Schematic', () => { ); const defaultOptions: AppShellOptions = { project: 'bar', - serverRouting: true, }; const workspaceOptions: WorkspaceOptions = { diff --git a/packages/schematics/angular/app-shell/schema.json b/packages/schematics/angular/app-shell/schema.json index 262fb3fa45b0..c087a1e1cfe1 100644 --- a/packages/schematics/angular/app-shell/schema.json +++ b/packages/schematics/angular/app-shell/schema.json @@ -12,11 +12,6 @@ "$default": { "$source": "projectName" } - }, - "serverRouting": { - "description": "Set up a server application using the Server Routing and App Engine APIs (Developer Preview).", - "type": "boolean", - "default": false } }, "required": ["project"] diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 1704d8d89b4d..790e90fce784 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -101,7 +101,6 @@ export default function (options: ApplicationOptions): Rule { options.ssr ? schematic('ssr', { project: options.name, - serverRouting: options.serverRouting, skipInstall: true, }) : noop(), diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 2979775eb1ea..50f6a0650b96 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -32,7 +32,6 @@ describe('Application Schematic', () => { const defaultOptions: ApplicationOptions = { name: 'foo', skipPackageJson: false, - serverRouting: false, }; let workspaceTree: UnitTestTree; diff --git a/packages/schematics/angular/application/schema.json b/packages/schematics/angular/application/schema.json index b7d8e382aad2..7a6ea47a2020 100644 --- a/packages/schematics/angular/application/schema.json +++ b/packages/schematics/angular/application/schema.json @@ -118,10 +118,6 @@ "default": false, "x-user-analytics": "ep.ng_ssr" }, - "serverRouting": { - "description": "Set up a server application using the Server Routing and App Engine APIs (Developer Preview).", - "type": "boolean" - }, "experimentalZoneless": { "description": "Generate an application that does not use `zone.js`.", "type": "boolean", diff --git a/packages/schematics/angular/ng-new/index.ts b/packages/schematics/angular/ng-new/index.ts index 133b1083ee5c..f5e37ccccf40 100644 --- a/packages/schematics/angular/ng-new/index.ts +++ b/packages/schematics/angular/ng-new/index.ts @@ -57,7 +57,6 @@ export default function (options: NgNewOptions): Rule { minimal: options.minimal, standalone: options.standalone, ssr: options.ssr, - serverRouting: options.serverRouting, experimentalZoneless: options.experimentalZoneless, }; diff --git a/packages/schematics/angular/ng-new/schema.json b/packages/schematics/angular/ng-new/schema.json index 5b214c73b141..be65f561bc88 100644 --- a/packages/schematics/angular/ng-new/schema.json +++ b/packages/schematics/angular/ng-new/schema.json @@ -139,10 +139,6 @@ "type": "boolean", "x-user-analytics": "ep.ng_ssr" }, - "serverRouting": { - "description": "Create a server application in the initial project using the Server Routing and App Engine APIs (Developer Preview).", - "type": "boolean" - }, "experimentalZoneless": { "description": "Create an initial application that does not utilize `zone.js`.", "type": "boolean", diff --git a/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template b/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template index 107232f9107f..d1ff23ae44c8 100644 --- a/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template @@ -1,13 +1,13 @@ import { NgModule } from '@angular/core'; -import { ServerModule } from '@angular/platform-server';<% if(serverRouting) { %> -import { provideServerRouting } from '@angular/ssr';<% } %> +import { ServerModule } from '@angular/platform-server'; +import { provideServerRouting } from '@angular/ssr'; import { AppComponent } from './app.component'; -import { AppModule } from './app.module';<% if(serverRouting) { %> -import { serverRoutes } from './app.routes.server';<% } %> +import { AppModule } from './app.module'; +import { serverRoutes } from './app.routes.server'; @NgModule({ - imports: [AppModule, ServerModule],<% if(serverRouting) { %> - providers: [provideServerRouting(serverRoutes)],<% } %> + imports: [AppModule, ServerModule], + providers: [provideServerRouting(serverRoutes)], bootstrap: [AppComponent], }) export class AppServerModule {} diff --git a/packages/schematics/angular/server/files/application-builder/standalone-src/app/app.config.server.ts.template b/packages/schematics/angular/server/files/application-builder/standalone-src/app/app.config.server.ts.template index a7fd3d0b4fe7..012518913eed 100644 --- a/packages/schematics/angular/server/files/application-builder/standalone-src/app/app.config.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/standalone-src/app/app.config.server.ts.template @@ -1,13 +1,13 @@ import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; -import { provideServerRendering } from '@angular/platform-server';<% if(serverRouting) { %> -import { provideServerRouting } from '@angular/ssr';<% } %> -import { appConfig } from './app.config';<% if(serverRouting) { %> -import { serverRoutes } from './app.routes.server';<% } %> +import { provideServerRendering } from '@angular/platform-server'; +import { provideServerRouting } from '@angular/ssr'; +import { appConfig } from './app.config'; +import { serverRoutes } from './app.routes.server'; const serverConfig: ApplicationConfig = { providers: [ - provideServerRendering(),<% if(serverRouting) { %> - provideServerRouting(serverRoutes)<% } %> + provideServerRendering(), + provideServerRouting(serverRoutes) ] }; diff --git a/packages/schematics/angular/server/index.ts b/packages/schematics/angular/server/index.ts index 846125a36f2a..6467a1e532fe 100644 --- a/packages/schematics/angular/server/index.ts +++ b/packages/schematics/angular/server/index.ts @@ -28,7 +28,7 @@ import { JSONFile } from '../utility/json-file'; import { latestVersions } from '../utility/latest-versions'; import { isStandaloneApp } from '../utility/ng-ast-utils'; import { relativePathToWorkspaceRoot } from '../utility/paths'; -import { targetBuildNotFoundError } from '../utility/project-targets'; +import { isUsingApplicationBuilder, targetBuildNotFoundError } from '../utility/project-targets'; import { getMainFilePath } from '../utility/standalone/util'; import { getWorkspace, updateWorkspace } from '../utility/workspace'; import { Builders } from '../utility/workspace-models'; @@ -113,9 +113,7 @@ function updateConfigFileApplicationBuilder(options: ServerOptions): Rule { serverMainEntryName, ); - if (options.serverRouting) { - buildTarget.options['outputMode'] = 'static'; - } + buildTarget.options['outputMode'] = 'static'; }); } @@ -173,13 +171,11 @@ export default function (options: ServerOptions): Rule { throw targetBuildNotFoundError(); } - const isUsingApplicationBuilder = - clientBuildTarget.builder === Builders.Application || - clientBuildTarget.builder === Builders.BuildApplication; + const usingApplicationBuilder = isUsingApplicationBuilder(clientProject); if ( clientProject.targets.has('server') || - (isUsingApplicationBuilder && clientBuildTarget.options?.server !== undefined) + (usingApplicationBuilder && clientBuildTarget.options?.server !== undefined) ) { // Server has already been added. return; @@ -190,13 +186,10 @@ export default function (options: ServerOptions): Rule { const isStandalone = isStandaloneApp(host, browserEntryPoint); const sourceRoot = clientProject.sourceRoot ?? join(normalize(clientProject.root), 'src'); - let filesUrl = `./files/${isUsingApplicationBuilder ? 'application-builder/' : 'server-builder/'}`; + let filesUrl = `./files/${usingApplicationBuilder ? 'application-builder/' : 'server-builder/'}`; filesUrl += isStandalone ? 'standalone-src' : 'ngmodule-src'; const templateSource = apply(url(filesUrl), [ - options.serverRouting - ? noop() - : filter((path) => !path.endsWith('app.routes.server.ts.template')), applyTemplates({ ...strings, ...options, @@ -210,7 +203,7 @@ export default function (options: ServerOptions): Rule { return chain([ mergeWith(templateSource), - ...(isUsingApplicationBuilder + ...(usingApplicationBuilder ? [ updateConfigFileApplicationBuilder(options), updateTsConfigFile(clientBuildOptions.tsConfig), diff --git a/packages/schematics/angular/server/schema.json b/packages/schematics/angular/server/schema.json index bad36a9ee36a..225574d92155 100644 --- a/packages/schematics/angular/server/schema.json +++ b/packages/schematics/angular/server/schema.json @@ -17,10 +17,6 @@ "description": "Skip the automatic installation of packages. You will need to manually install the dependencies later.", "type": "boolean", "default": false - }, - "serverRouting": { - "description": "Configure the server application to use the Server Routing and App Engine APIs (Developer Preview).", - "type": "boolean" } }, "required": ["project"] diff --git a/packages/schematics/angular/ssr/files/application-builder-common-engine/server.ts.template b/packages/schematics/angular/ssr/files/application-builder-common-engine/server.ts.template deleted file mode 100644 index 63a70ae893f6..000000000000 --- a/packages/schematics/angular/ssr/files/application-builder-common-engine/server.ts.template +++ /dev/null @@ -1,67 +0,0 @@ -import { APP_BASE_HREF } from '@angular/common'; -import { CommonEngine, isMainModule } from '@angular/ssr/node'; -import express from 'express'; -import { dirname, join, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; -import <% if (isStandalone) { %>bootstrap<% } else { %>AppServerModule<% } %> from './main.server'; - -const serverDistFolder = dirname(fileURLToPath(import.meta.url)); -const browserDistFolder = resolve(serverDistFolder, '../<%= browserDistDirectory %>'); -const indexHtml = join(serverDistFolder, 'index.server.html'); - -const app = express(); -const commonEngine = new CommonEngine(); - -/** - * Example Express Rest API endpoints can be defined here. - * Uncomment and define endpoints as necessary. - * - * Example: - * ```ts - * app.get('/api/**', (req, res) => { - * // Handle API request - * }); - * ``` - */ - -/** - * Serve static files from /<%= browserDistDirectory %> - */ -app.get( - '**', - express.static(browserDistFolder, { - maxAge: '1y', - index: 'index.html' - }), -); - -/** - * Handle all other requests by rendering the Angular application. - */ -app.get('**', (req, res, next) => { - const { protocol, originalUrl, baseUrl, headers } = req; - - commonEngine - .render({ - <% if (isStandalone) { %>bootstrap<% } else { %>bootstrap: AppServerModule<% } %>, - documentFilePath: indexHtml, - url: `${protocol}://${headers.host}${originalUrl}`, - publicPath: browserDistFolder, - providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }], - }) - .then((html) => res.send(html)) - .catch((err) => next(err)); -}); - -/** - * Start the server if this module is the main entry point. - * The server listens on the port defined by the `PORT` environment variable, or defaults to 4000. - */ -if (isMainModule(import.meta.url)) { - const port = process.env['PORT'] || 4000; - app.listen(port, () => { - console.log(`Node Express server listening on http://localhost:${port}`); - }); -} - -export default app; diff --git a/packages/schematics/angular/ssr/index.ts b/packages/schematics/angular/ssr/index.ts index 6249778a8594..b73c161bd5b5 100644 --- a/packages/schematics/angular/ssr/index.ts +++ b/packages/schematics/angular/ssr/index.ts @@ -32,13 +32,11 @@ import { import { JSONFile } from '../utility/json-file'; import { latestVersions } from '../utility/latest-versions'; import { isStandaloneApp } from '../utility/ng-ast-utils'; -import { targetBuildNotFoundError } from '../utility/project-targets'; +import { isUsingApplicationBuilder, targetBuildNotFoundError } from '../utility/project-targets'; import { getMainFilePath } from '../utility/standalone/util'; -import { ProjectDefinition, getWorkspace } from '../utility/workspace'; -import { Builders } from '../utility/workspace-models'; +import { getWorkspace } from '../utility/workspace'; import { Schema as SSROptions } from './schema'; -import { isTTY } from './tty'; const SERVE_SSR_TARGET_NAME = 'serve-ssr'; const PRERENDER_TARGET_NAME = 'prerender'; @@ -202,8 +200,7 @@ function updateApplicationBuilderWorkspaceConfigRule( buildTarget.options = { ...buildTarget.options, outputPath, - outputMode: options.serverRouting ? 'server' : undefined, - prerender: options.serverRouting ? undefined : true, + outputMode: 'server', ssr: { entry: join(normalize(projectSourceRoot), 'server.ts'), }, @@ -336,46 +333,37 @@ function addServerFile( if (!project) { throw new SchematicsException(`Invalid project name (${projectName})`); } - const isUsingApplicationBuilder = usingApplicationBuilder(project); - - const browserDistDirectory = isUsingApplicationBuilder + const usingApplicationBuilder = isUsingApplicationBuilder(project); + const browserDistDirectory = usingApplicationBuilder ? (await getApplicationBuilderOutputPaths(host, projectName)).browser : await getLegacyOutputPaths(host, projectName, 'build'); - const applicationBuilderFiles = - 'application-builder' + (options.serverRouting ? '' : '-common-engine'); - return mergeWith( - apply( - url(`./files/${isUsingApplicationBuilder ? applicationBuilderFiles : 'server-builder'}`), - [ - applyTemplates({ - ...strings, - ...options, - browserDistDirectory, - isStandalone, - }), - move(projectSourceRoot), - ], - ), + apply(url(`./files/${usingApplicationBuilder ? 'application-builder' : 'server-builder'}`), [ + applyTemplates({ + ...strings, + ...options, + browserDistDirectory, + isStandalone, + }), + move(projectSourceRoot), + ]), ); }; } -export default function (inputOptions: SSROptions): Rule { +export default function (options: SSROptions): Rule { return async (host, context) => { - const browserEntryPoint = await getMainFilePath(host, inputOptions.project); + const browserEntryPoint = await getMainFilePath(host, options.project); const isStandalone = isStandaloneApp(host, browserEntryPoint); const workspace = await getWorkspace(host); - const clientProject = workspace.projects.get(inputOptions.project); + const clientProject = workspace.projects.get(options.project); if (!clientProject) { throw targetBuildNotFoundError(); } - const isUsingApplicationBuilder = usingApplicationBuilder(clientProject); - const serverRouting = await isServerRoutingEnabled(isUsingApplicationBuilder, inputOptions); - const options = { ...inputOptions, serverRouting }; + const usingApplicationBuilder = isUsingApplicationBuilder(clientProject); const sourceRoot = clientProject.sourceRoot ?? posix.join(clientProject.root, 'src'); return chain([ @@ -383,7 +371,7 @@ export default function (inputOptions: SSROptions): Rule { ...options, skipInstall: true, }), - ...(isUsingApplicationBuilder + ...(usingApplicationBuilder ? [ updateApplicationBuilderWorkspaceConfigRule(sourceRoot, options, context), updateApplicationBuilderTsConfigRule(options), @@ -393,73 +381,8 @@ export default function (inputOptions: SSROptions): Rule { updateWebpackBuilderWorkspaceConfigRule(sourceRoot, options), ]), addServerFile(sourceRoot, options, isStandalone), - addScriptsRule(options, isUsingApplicationBuilder), - addDependencies(options, isUsingApplicationBuilder), + addScriptsRule(options, usingApplicationBuilder), + addDependencies(options, usingApplicationBuilder), ]); }; } - -function usingApplicationBuilder(project: ProjectDefinition) { - const buildBuilder = project.targets.get('build')?.builder; - const isUsingApplicationBuilder = - buildBuilder === Builders.Application || buildBuilder === Builders.BuildApplication; - - return isUsingApplicationBuilder; -} - -// Wrap inquirer in a `prompt` function. -export type Prompt = (message: string, defaultValue: boolean) => Promise; -const defaultPrompter: Prompt = async (message, defaultValue) => { - const { confirm } = await import('@inquirer/prompts'); - - return await confirm({ - message, - default: defaultValue, - }); -}; - -// Allow the prompt functionality to be overridden to facilitate testing. -let prompt = defaultPrompter; -export function setPrompterForTestOnly(prompter?: Prompt): void { - prompt = prompter ?? defaultPrompter; -} - -/** Returns whether or not server routing is enabled, potentially prompting the user if necessary. */ -async function isServerRoutingEnabled( - isUsingApplicationBuilder: boolean, - options: SSROptions, -): Promise { - if (!isUsingApplicationBuilder) { - if (options.serverRouting) { - throw new SchematicsException( - 'Server routing APIs can only be added to a project using `application` builder.', - ); - } else { - return false; - } - } - - // Use explicit option if provided. - if (options.serverRouting !== undefined) { - return options.serverRouting; - } - - const serverRoutingDefault = false; - - // Use the default if not in an interactive terminal. - if (!isTTY()) { - return serverRoutingDefault; - } - - // `inquirer` requires `async_hooks` which isn't supported by webcontainers, therefore we can't prompt in that context. - // See: https://github.com/SBoudrias/Inquirer.js/issues/1426 - if (process.versions.webcontainer) { - return serverRoutingDefault; - } - - // Prompt the user if in an interactive terminal and no option was provided. - return await prompt( - 'Would you like to use the Server Routing and App Engine APIs (Developer Preview) for this server application?', - /* defaultValue */ serverRoutingDefault, - ); -} diff --git a/packages/schematics/angular/ssr/index_spec.ts b/packages/schematics/angular/ssr/index_spec.ts index a7de8d12f208..0330e0f4e623 100644 --- a/packages/schematics/angular/ssr/index_spec.ts +++ b/packages/schematics/angular/ssr/index_spec.ts @@ -10,12 +10,10 @@ import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/te import { join } from 'node:path'; import { Schema as ServerOptions } from './schema'; -import { Prompt, setPrompterForTestOnly } from './index'; describe('SSR Schematic', () => { const defaultOptions: ServerOptions = { project: 'test-app', - serverRouting: false, }; const schematicRunner = new SchematicTestRunner( @@ -32,10 +30,6 @@ describe('SSR Schematic', () => { }; beforeEach(async () => { - setPrompterForTestOnly((message) => { - return fail(`Unmocked prompt: ${message}`) as never; - }); - appTree = await schematicRunner.runExternalSchematic( '@schematics/angular', 'workspace', @@ -163,90 +157,6 @@ describe('SSR Schematic', () => { server: 'node-server', }); }); - - it('generates server routing configuration when enabled', async () => { - const tree = await schematicRunner.runSchematic( - 'ssr', - { ...defaultOptions, serverRouting: true }, - appTree, - ); - - expect(tree.exists('/projects/test-app/src/app/app.routes.server.ts')).toBeTrue(); - }); - - it('does not generate server routing configuration when disabled', async () => { - const tree = await schematicRunner.runSchematic( - 'ssr', - { ...defaultOptions, serverRouting: false }, - appTree, - ); - - expect(tree.exists('/projects/test-app/src/app/app.routes.server.ts')).toBeFalse(); - }); - - it('generates server routing configuration when prompt is accepted by the user', async () => { - const prompter = jasmine.createSpy('prompt').and.resolveTo(true); - setPrompterForTestOnly(prompter); - - process.env['NG_FORCE_TTY'] = 'TRUE'; - const tree = await schematicRunner.runSchematic( - 'ssr', - { ...defaultOptions, serverRouting: undefined }, - appTree, - ); - - expect(prompter).toHaveBeenCalledTimes(1); - - expect(tree.exists('/projects/test-app/src/app/app.routes.server.ts')).toBeTrue(); - }); - - it('does not generate server routing configuration when prompt is rejected by the user', async () => { - const prompter = jasmine.createSpy('prompt').and.resolveTo(false); - setPrompterForTestOnly(prompter); - - process.env['NG_FORCE_TTY'] = 'TRUE'; - const tree = await schematicRunner.runSchematic( - 'ssr', - { ...defaultOptions, serverRouting: undefined }, - appTree, - ); - - expect(prompter).toHaveBeenCalledTimes(1); - - expect(tree.exists('/projects/test-app/src/app/app.routes.server.ts')).toBeFalse(); - }); - - it('defaults to skipping server route generation when not in an interactive terminal', async () => { - const prompter = jasmine.createSpy('prompt').and.resolveTo(false); - setPrompterForTestOnly(prompter); - - process.env['NG_FORCE_TTY'] = 'FALSE'; - const tree = await schematicRunner.runSchematic( - 'ssr', - { ...defaultOptions, serverRouting: undefined }, - appTree, - ); - - expect(prompter).not.toHaveBeenCalled(); - - expect(tree.exists('/projects/test-app/src/app/app.routes.server.ts')).toBeFalse(); - }); - - it('does not prompt when running in a web container', async () => { - const prompter = jasmine.createSpy('prompt').and.resolveTo(false); - setPrompterForTestOnly(prompter); - - process.versions.webcontainer = 'abc123'; // Simulate webcontainer. - const tree = await schematicRunner.runSchematic( - 'ssr', - { ...defaultOptions, serverRouting: undefined }, - appTree, - ); - - expect(prompter).not.toHaveBeenCalled(); - - expect(tree.exists('/projects/test-app/src/app/app.routes.server.ts')).toBeFalse(); - }); }); describe('Legacy browser builder', () => { @@ -313,27 +223,5 @@ describe('SSR Schematic', () => { const content = tree.readContent('/projects/test-app/src/server.ts'); expect(content).toContain(`const distFolder = join(process.cwd(), 'dist/test-app/browser');`); }); - - it('throws an exception when used with `serverRouting`', async () => { - await expectAsync( - schematicRunner.runSchematic('ssr', { ...defaultOptions, serverRouting: true }, appTree), - ).toBeRejectedWithError(/Server routing APIs.*`application` builder/); - }); - - it('automatically disables `serverRouting` and does not prompt for it', async () => { - const prompter = jasmine.createSpy('prompt').and.resolveTo(false); - setPrompterForTestOnly(prompter); - - process.env['NG_FORCE_TTY'] = 'TRUE'; - const tree = await schematicRunner.runSchematic( - 'ssr', - { ...defaultOptions, serverRouting: undefined }, - appTree, - ); - - expect(prompter).not.toHaveBeenCalled(); - - expect(tree.exists('/projects/test-app/src/app/app.routes.server.ts')).toBeFalse(); - }); }); }); diff --git a/packages/schematics/angular/ssr/schema.json b/packages/schematics/angular/ssr/schema.json index 669f1449ad13..aeaf6262908a 100644 --- a/packages/schematics/angular/ssr/schema.json +++ b/packages/schematics/angular/ssr/schema.json @@ -16,10 +16,6 @@ "description": "Skip the automatic installation of packages. You will need to manually install the dependencies later.", "type": "boolean", "default": false - }, - "serverRouting": { - "description": "Configure the server application to use the Angular Server Routing API and App Engine APIs (currently in Developer Preview).", - "type": "boolean" } }, "required": ["project"], diff --git a/packages/schematics/angular/utility/project-targets.ts b/packages/schematics/angular/utility/project-targets.ts index 584922c8af9c..8897a3ddab66 100644 --- a/packages/schematics/angular/utility/project-targets.ts +++ b/packages/schematics/angular/utility/project-targets.ts @@ -7,7 +7,17 @@ */ import { SchematicsException } from '@angular-devkit/schematics'; +import { ProjectDefinition } from './workspace'; +import { Builders } from './workspace-models'; export function targetBuildNotFoundError(): SchematicsException { return new SchematicsException(`Project target "build" not found.`); } + +export function isUsingApplicationBuilder(project: ProjectDefinition): boolean { + const buildBuilder = project.targets.get('build')?.builder; + const isUsingApplicationBuilder = + buildBuilder === Builders.Application || buildBuilder === Builders.BuildApplication; + + return isUsingApplicationBuilder; +} diff --git a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts index 8a4e074f6045..5df9bb73c72a 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts @@ -1,7 +1,7 @@ import { join } from 'node:path'; import { getGlobalVariable } from '../../../utils/env'; -import { expectFileToMatch, rimraf, writeFile } from '../../../utils/fs'; -import { installWorkspacePackages } from '../../../utils/packages'; +import { expectFileToMatch, writeFile } from '../../../utils/fs'; +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; import { ng } from '../../../utils/process'; import { updateJsonFile, useSha } from '../../../utils/project'; @@ -31,29 +31,15 @@ export default async function () { } // Forcibly remove in case another test doesn't clean itself up. - await rimraf('node_modules/@angular/ssr'); - if (useWebpackBuilder) { - await ng( - 'add', - '@angular/ssr', - '--project', - projectName, - '--skip-confirmation', - '--skip-install', - // Server routing is not supported on `browser` builder. - // '--server-routing', - ); - } else { - await ng( - 'add', - '@angular/ssr', - '--project', - projectName, - '--skip-confirmation', - '--skip-install', - '--server-routing', - ); - } + await uninstallPackage('@angular/ssr'); + await ng( + 'add', + '@angular/ssr', + '--project', + projectName, + '--skip-confirmation', + '--skip-install', + ); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts index 25c63781de11..7deda0fd2584 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts @@ -1,7 +1,7 @@ import { join } from 'node:path'; import { getGlobalVariable } from '../../../utils/env'; -import { expectFileToMatch, readFile, rimraf, writeFile } from '../../../utils/fs'; -import { installWorkspacePackages } from '../../../utils/packages'; +import { expectFileToMatch, readFile, writeFile } from '../../../utils/fs'; +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; import { ng } from '../../../utils/process'; import { useSha } from '../../../utils/project'; import { deepStrictEqual } from 'node:assert'; @@ -9,7 +9,7 @@ import { deepStrictEqual } from 'node:assert'; export default async function () { const useWebpackBuilder = !getGlobalVariable('argv')['esbuild']; // Forcibly remove in case another test doesn't clean itself up. - await rimraf('node_modules/@angular/ssr'); + await uninstallPackage('@angular/ssr'); await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); @@ -59,10 +59,6 @@ export default async function () { path: 'lazy-two', loadComponent: () => import('./lazy-two/lazy-two.component').then(c => c.LazyTwoComponent), }, - { - path: ':param', - component: OneComponent, - }, ]; `, ); diff --git a/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts b/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts index 81abed0008ba..64f9ca1d52b7 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts @@ -13,7 +13,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await rimraf('node_modules/@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation'); + await ng('add', '@angular/ssr', '--skip-confirmation'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts index 96be34e524da..92d83e029576 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts @@ -14,7 +14,7 @@ export default async function () { // `--server-routing` not supported in `browser` builder. await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); } else { - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); } await useSha(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts index b697ac513ab4..10d8e3018b60 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts @@ -15,7 +15,7 @@ export default async function () { // `--server-routing` not supported in `browser` builder. await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); } else { - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); } if (!useWebpackBuilder) { diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts index 9d01f375a211..52ceafa7b05f 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts @@ -12,7 +12,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts index c4c2065f8b64..a35843bcc7ef 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts @@ -19,7 +19,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts index 9b7f75f04a87..11d32dd1b7fe 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts @@ -44,7 +44,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts index 0f10a959a9de..c7f68267fc4f 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts @@ -19,7 +19,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts index 85b6891fa28c..b8f30483c303 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts @@ -21,7 +21,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); await installPackage('h3@1'); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts index 891b646bfc38..9e79e83ecba2 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts @@ -16,7 +16,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts index 734f15e666e3..d06c3f707463 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts @@ -13,7 +13,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts index 1d5d7847fca6..10898aae5338 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts @@ -19,7 +19,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts index 4fe4c249803d..434530aedce2 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts @@ -21,7 +21,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts index 92c154db3891..e0cfd9357517 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts @@ -14,7 +14,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts b/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts index 972c35be4452..59c8ec9c7042 100644 --- a/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts +++ b/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts @@ -15,7 +15,7 @@ export default async function () { // `--server-routing` not supported in `browser` builder. await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); } else { - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); } await useSha(); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-default.ts b/tests/legacy-cli/e2e/tests/vite/ssr-default.ts index cfaece9551ef..8b64a4b30f67 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-default.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-default.ts @@ -16,7 +16,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts index d5e045abef03..387d14ed67f6 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts @@ -14,7 +14,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts index 0dceea441dda..851ccfef87f7 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts @@ -14,7 +14,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); await installPackage('fastify@5'); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts index 5d2898370405..81950a061979 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts @@ -14,7 +14,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); await installPackage('h3@1'); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts index a71557a43948..2d65f0e7b9ff 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts @@ -14,7 +14,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); await installPackage('hono@4'); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts b/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts index 7061e881fdff..6731c15b67cc 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts @@ -14,7 +14,7 @@ export default async function () { // `--server-routing` not supported in `browser` builder. await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); } else { - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); } await useSha(); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-new-dep-optimization.ts b/tests/legacy-cli/e2e/tests/vite/ssr-new-dep-optimization.ts index be814b01bf89..d7b8a63813eb 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-new-dep-optimization.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-new-dep-optimization.ts @@ -22,7 +22,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-no-server-entry-sub-path.ts b/tests/legacy-cli/e2e/tests/vite/ssr-no-server-entry-sub-path.ts deleted file mode 100644 index a4d4ac2cfc61..000000000000 --- a/tests/legacy-cli/e2e/tests/vite/ssr-no-server-entry-sub-path.ts +++ /dev/null @@ -1,54 +0,0 @@ -import assert from 'node:assert'; -import { - execAndWaitForOutputToMatch, - ng, - silentNg, - waitForAnyProcessOutputToMatch, -} from '../../utils/process'; -import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; -import { useSha } from '../../utils/project'; -import { getGlobalVariable } from '../../utils/env'; -import { findFreePort } from '../../utils/network'; -import { writeFile } from '../../utils/fs'; - -export default async function () { - assert( - getGlobalVariable('argv')['esbuild'], - 'This test should not be called in the Webpack suite.', - ); - - // Forcibly remove in case another test doesn't clean itself up. - await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--no-server-routing', '--skip-confirmation', '--skip-install'); - await useSha(); - await installWorkspacePackages(); - - await silentNg('generate', 'component', 'home'); - await writeFile( - 'src/app/app.routes.ts', - ` - import { Routes } from '@angular/router'; - import {HomeComponent} from './home/home.component'; - - export const routes: Routes = [{ - path: 'sub/home', - component: HomeComponent - }]; - `, - ); - - const port = await findFreePort(); - await execAndWaitForOutputToMatch('ng', ['serve', '--port', `${port}`], /complete/, { - ...process.env, - NO_COLOR: 'true', - }); - - const [, response] = await Promise.all([ - assert.rejects( - waitForAnyProcessOutputToMatch(/Pre-transform error: Failed to load url/, 8_000), - ), - fetch(`http://localhost:${port}/sub/home`), - ]); - - assert(response.ok, `Expected 'response.ok' to be 'true'.`); -} diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts index 5e0a74638527..d40c9853951f 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts @@ -13,7 +13,7 @@ export default async function () { // Forcibly remove in case another test doesn't clean itself up. await uninstallPackage('@angular/ssr'); - await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); From f780e8beb3ccea27ef0442d1d3814ec2a668057d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 13 Mar 2025 11:46:16 -0400 Subject: [PATCH 008/160] fix(@angular/build): ensure relative karma stack traces for test failures The karma configuration will now automatically set the `basePath` option to the temporary output path when using the application build system's karma testing. This ensures that only the relative path of the test files is represented in the stack traces of test failures. --- .../src/builders/karma/application_builder.ts | 17 ++++++++++------- .../legacy-cli/e2e/tests/test/test-sourcemap.ts | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/angular/build/src/builders/karma/application_builder.ts b/packages/angular/build/src/builders/karma/application_builder.ts index bfe7af7711ca..7651ecaaff5d 100644 --- a/packages/angular/build/src/builders/karma/application_builder.ts +++ b/packages/angular/build/src/builders/karma/application_builder.ts @@ -438,7 +438,8 @@ async function initializeApplication( await writeTestFiles(buildOutput.files, buildOptions.outputPath); // We need to add this to the beginning *after* the testing framework has - // prepended its files. + // prepended its files. The output path is required for each since they are + // added later in the test process via a plugin. const polyfillsFile: FilePattern = { pattern: `${outputPath}/polyfills.js`, included: true, @@ -454,12 +455,14 @@ async function initializeApplication( watched: false, }; + karmaOptions.basePath = outputPath; + karmaOptions.files ??= []; if (options.scripts?.length) { // This should be more granular to support named bundles. // However, it replicates the behavior of the Karma Webpack-based builder. karmaOptions.files.push({ - pattern: `${outputPath}/scripts.js`, + pattern: `scripts.js`, watched: false, type: 'js', }); @@ -467,18 +470,18 @@ async function initializeApplication( karmaOptions.files.push( // Serve global setup script. - { pattern: `${outputPath}/${mainName}.js`, type: 'module', watched: false }, + { pattern: `${mainName}.js`, type: 'module', watched: false }, // Serve all source maps. - { pattern: `${outputPath}/*.map`, included: false, watched: false }, + { pattern: `*.map`, included: false, watched: false }, // These are the test entrypoints. - { pattern: `${outputPath}/spec-*.js`, type: 'module', watched: false }, + { pattern: `spec-*.js`, type: 'module', watched: false }, ); if (hasChunkOrWorkerFiles(buildOutput.files)) { karmaOptions.files.push( // Allow loading of chunk-* files but don't include them all on load. { - pattern: `${outputPath}/{chunk,worker}-*.js`, + pattern: `{chunk,worker}-*.js`, type: 'module', included: false, watched: false, @@ -488,7 +491,7 @@ async function initializeApplication( if (options.styles?.length) { // Serve CSS outputs on page load, these are the global styles. - karmaOptions.files.push({ pattern: `${outputPath}/*.css`, type: 'css', watched: false }); + karmaOptions.files.push({ pattern: `*.css`, type: 'css', watched: false }); } const parsedKarmaConfig: Config & ConfigOptions = await karma.config.parseConfig( diff --git a/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts b/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts index 797aba88e17f..e75e214a2457 100644 --- a/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts +++ b/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts @@ -20,7 +20,7 @@ export default async function () { throw new Error('ng test should have failed.'); } catch (error) { assertIsError(error); - assert.match(error.message, /src\/app\/app\.component\.spec\.ts/); + assert.match(error.message, /\(src\/app\/app\.component\.spec\.ts:3:27/); assert.doesNotMatch(error.message, /_karma_webpack_/); } From 318c164d1f58b919545bca005df225bc8a55a58d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 12 Mar 2025 15:21:36 -0400 Subject: [PATCH 009/160] refactor(@angular/build): define an internal ngHmrMode value An `ngHmrMode` boolean value will now be defined within application bundles. The value is based on the development server's `hmr` option with `true` when HMR is enabled and `false` when disabled. For all application builds, the value will be `false`. `ngHmrMode` is similar in behavior to `ngServeMode` or `ngDevMode`. It will not be present in the output code unless referenced and in those cases only the final boolean value will be present if not optimized out of the final code. The value is not considered part of the public API and may change in the future. --- .../tests/behavior/component-updates_spec.ts | 34 +++++++++++++++++++ .../tools/esbuild/application-code-bundle.ts | 1 + 2 files changed, 35 insertions(+) diff --git a/packages/angular/build/src/builders/dev-server/tests/behavior/component-updates_spec.ts b/packages/angular/build/src/builders/dev-server/tests/behavior/component-updates_spec.ts index d471d487c556..742e07ea3b74 100644 --- a/packages/angular/build/src/builders/dev-server/tests/behavior/component-updates_spec.ts +++ b/packages/angular/build/src/builders/dev-server/tests/behavior/component-updates_spec.ts @@ -47,5 +47,39 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT expect(response?.headers.get('Cache-Control')).toEqual('no-cache'); expect(output).toBe(''); }); + + it('sets ngHmrMode define to true when HMR is enabled', async () => { + harness.useTarget('serve', { + ...BASE_OPTIONS, + hmr: true, + }); + + await harness.writeFile( + 'src/main.ts', + 'declare const ngHmrMode: boolean; console.log(`HMR=${ngHmrMode}`);', + ); + + const { result, content } = await executeOnceAndFetch(harness, 'main.js'); + + expect(result?.success).toBeTrue(); + expect(content).toContain('HMR=${true}'); + }); + + it('sets ngHmrMode define to false when HMR is disabled', async () => { + harness.useTarget('serve', { + ...BASE_OPTIONS, + hmr: false, + }); + + await harness.writeFile( + 'src/main.ts', + 'declare const ngHmrMode: boolean; console.log(`HMR=${ngHmrMode}`);', + ); + + const { result, content } = await executeOnceAndFetch(harness, 'main.js'); + + expect(result?.success).toBeTrue(); + expect(content).toContain('HMR=${false}'); + }); }); }); diff --git a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts index 58bdd78c2dcf..df7371e3a4da 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -600,6 +600,7 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu ...(optimizationOptions.scripts ? { 'ngDevMode': 'false' } : undefined), 'ngJitMode': jit ? 'true' : 'false', 'ngServerMode': 'false', + 'ngHmrMode': options.templateUpdates ? 'true' : 'false', }, loader: loaderExtensions, footer, From 27fe5dad6280c3e906ee03bcac314c719812d83b Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 14 Mar 2025 14:37:07 +0000 Subject: [PATCH 010/160] docs: correct bazel e2e commands These command are outdated and no longer work --- docs/DEVELOPER.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/DEVELOPER.md b/docs/DEVELOPER.md index 2544e6e2f4b1..36cf7da7fcdf 100644 --- a/docs/DEVELOPER.md +++ b/docs/DEVELOPER.md @@ -89,8 +89,8 @@ You can find more info about debugging [tests with Bazel in the docs.](https://g ### End to end tests - For a complete list of test targets use the following Bazel query: `pnpm bazel query "tests(//tests/...)"` -- Run a subset of the tests: `pnpm bazel test //tests/legacy-cli:e2e_node18 --config=e2e --test_filter="tests/i18n/ivy-localize-*"` -- Use `bazel run` to debug failing tests debugging: `pnpm bazel run //tests/legacy-cli:e2e_node18 --config=e2e --test_arg="--glob=tests/basic/aot.ts"` +- Run a subset of the tests: `pnpm bazel test //tests/legacy-cli:e2e_node22 --config=e2e --test_filter="tests/i18n/ivy-localize-*"` +- Use `bazel run` to debug failing tests debugging: `JS_BINARY__PATCH_NODE_FS=0 pnpm bazel run //tests/legacy-cli:e2e_node22 --config=e2e --test_arg="--glob=tests/basic/aot.ts"` - Provide additional `e2e_runner` options using `--test_arg`: `--test_arg="--package-manager=yarn"` When running the debug commands, Node will stop and wait for a debugger to attach. From f4be831197010a17394264bc74b1eb385ba95028 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 14 Mar 2025 14:48:44 +0000 Subject: [PATCH 011/160] feat(@angular/build): Support Sass package importers Enhanced Sass integration by adding support for package importers. See: https://sass-lang.com/blog/announcing-pkg-importers/ Closes: #29854 --- .../esbuild/stylesheets/sass-language.ts | 7 ++-- tests/legacy-cli/e2e.bzl | 1 + .../tests/build/styles/sass-pkg-importer.ts | 34 +++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/build/styles/sass-pkg-importer.ts diff --git a/packages/angular/build/src/tools/esbuild/stylesheets/sass-language.ts b/packages/angular/build/src/tools/esbuild/stylesheets/sass-language.ts index b3972ac407f4..4bccfb3adba4 100644 --- a/packages/angular/build/src/tools/esbuild/stylesheets/sass-language.ts +++ b/packages/angular/build/src/tools/esbuild/stylesheets/sass-language.ts @@ -43,7 +43,8 @@ export const SassStylesheetLanguage = Object.freeze({ resolveDir = dirname(fileURLToPath(options.containingUrl)); } - const result = await build.resolve(url, { + const path = url.startsWith('pkg:') ? url.slice(4) : url; + const result = await build.resolve(path, { kind: 'import-rule', resolveDir, }); @@ -56,8 +57,8 @@ export const SassStylesheetLanguage = Object.freeze({ }); function parsePackageName(url: string): { packageName: string; readonly pathSegments: string[] } { - const parts = url.split('/'); - const hasScope = parts.length >= 2 && parts[0].startsWith('@'); + const parts = (url.startsWith('pkg:') ? url.slice(4) : url).split('/'); + const hasScope = parts.length >= 2 && parts[0][0] === '@'; const [nameOrScope, nameOrFirstPath, ...pathPart] = parts; const packageName = hasScope ? `${nameOrScope}/${nameOrFirstPath}` : nameOrScope; diff --git a/tests/legacy-cli/e2e.bzl b/tests/legacy-cli/e2e.bzl index 1bed11a77596..2152f6dcd229 100644 --- a/tests/legacy-cli/e2e.bzl +++ b/tests/legacy-cli/e2e.bzl @@ -46,6 +46,7 @@ WEBPACK_IGNORE_TESTS = [ "tests/i18n/ivy-localize-app-shell.js", "tests/i18n/ivy-localize-app-shell-service-worker.js", "tests/commands/serve/ssr-http-requests-assets.js", + "tests/build/styles/sass-pkg-importer.js", "tests/build/prerender/http-requests-assets.js", "tests/build/prerender/error-with-sourcemaps.js", "tests/build/server-rendering/server-routes-*", diff --git a/tests/legacy-cli/e2e/tests/build/styles/sass-pkg-importer.ts b/tests/legacy-cli/e2e/tests/build/styles/sass-pkg-importer.ts new file mode 100644 index 000000000000..8fbb6e74310f --- /dev/null +++ b/tests/legacy-cli/e2e/tests/build/styles/sass-pkg-importer.ts @@ -0,0 +1,34 @@ +import assert from 'node:assert'; +import { writeFile } from '../../../utils/fs'; +import { getActivePackageManager, uninstallPackage } from '../../../utils/packages'; +import { ng } from '../../../utils/process'; +import { isPrereleaseCli, updateJsonFile } from '../../../utils/project'; +import { appendFile } from 'node:fs/promises'; +import { getGlobalVariable } from '../../../utils/env'; + +export default async function () { + assert( + getGlobalVariable('argv')['esbuild'], + 'This test should not be called in the Webpack suite.', + ); + + // forcibly remove in case another test doesn't clean itself up + await uninstallPackage('@angular/material'); + + const isPrerelease = await isPrereleaseCli(); + const tag = isPrerelease ? '@next' : ''; + if (getActivePackageManager() === 'npm') { + await appendFile('.npmrc', '\nlegacy-peer-deps=true'); + } + + await ng('add', `@angular/material${tag}`, '--skip-confirmation'); + await Promise.all([ + updateJsonFile('angular.json', (workspaceJson) => { + const appArchitect = workspaceJson.projects['test-project'].architect; + appArchitect.build.options.styles = ['src/styles.scss']; + }), + writeFile('src/styles.scss', `@use 'pkg:@angular/material' as mat;`), + ]); + + await ng('build'); +} From 29a58e5bf7f45fd3fe0537c3b0a87aee4dcf0d05 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Mar 2025 12:04:57 -0400 Subject: [PATCH 012/160] build: move build-angular/build-webpack specific dependencies out of root With the migration to `rules_js`, package specific dependencies now only need to be referenced with the source `package.json` for each specific package. Most of the `@angular-devkit/build-angular` and `@angular-devkit/build-webpack` specific dependencies have now been moved. This is not exhaustive and further changes will continue to move additional dependencies. --- package.json | 24 ------ .../angular_devkit/build_angular/BUILD.bazel | 54 ++++++------- .../angular_devkit/build_webpack/BUILD.bazel | 4 +- .../angular_devkit/build_webpack/package.json | 3 +- packages/ngtools/webpack/BUILD.bazel | 3 +- pnpm-lock.yaml | 75 +------------------ 6 files changed, 36 insertions(+), 127 deletions(-) diff --git a/package.json b/package.json index 135047a4f7e8..c05f46db4cfa 100644 --- a/package.json +++ b/package.json @@ -67,14 +67,8 @@ "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", "@babel/plugin-syntax-import-attributes": "7.26.0", - "@babel/plugin-transform-async-generator-functions": "7.26.8", - "@babel/plugin-transform-async-to-generator": "7.25.9", - "@babel/plugin-transform-runtime": "7.26.10", - "@babel/preset-env": "7.26.9", - "@babel/runtime": "7.26.10", "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "8.0.3", - "@discoveryjs/json-ext": "0.6.3", "@eslint/compat": "1.2.7", "@eslint/eslintrc": "3.3.0", "@eslint/js": "9.22.0", @@ -116,15 +110,11 @@ "ajv": "8.17.1", "ajv-formats": "3.0.1", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.21", - "babel-loader": "10.0.0", "beasties": "0.2.0", "browser-sync": "3.0.3", "browserslist": "^4.21.5", "buffer": "6.0.3", "chokidar": "4.0.3", - "copy-webpack-plugin": "13.0.0", - "css-loader": "7.1.2", "debug": "^4.1.1", "esbuild": "0.25.1", "esbuild-wasm": "0.25.1", @@ -153,14 +143,10 @@ "karma-jasmine-html-reporter": "~2.1.0", "karma-source-map-support": "1.4.0", "less": "4.2.2", - "less-loader": "12.2.0", - "license-webpack-plugin": "4.0.2", "listr2": "8.2.5", "lmdb": "3.2.6", - "loader-utils": "3.3.1", "lodash": "^4.17.21", "magic-string": "0.30.17", - "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.1", "ng-packagr": "20.0.0-next.1", "npm": "^11.0.0", @@ -173,26 +159,21 @@ "picomatch": "4.0.2", "piscina": "4.8.0", "postcss": "8.5.3", - "postcss-loader": "8.1.1", "prettier": "^3.0.0", "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.0.171", - "resolve-url-loader": "5.0.0", "rollup": "4.35.0", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.2", "sass": "1.85.1", - "sass-loader": "16.0.5", "semver": "7.7.1", "shelljs": "^0.9.0", "source-map": "0.7.4", - "source-map-loader": "5.0.0", "source-map-support": "0.5.21", "symbol-observable": "4.0.0", "tar": "^7.0.0", - "terser": "5.39.0", "tinyglobby": "0.2.12", "tree-kill": "1.2.2", "ts-node": "^10.9.1", @@ -203,11 +184,6 @@ "verdaccio": "6.0.5", "verdaccio-auth-memory": "^10.0.0", "watchpack": "2.4.2", - "webpack": "5.98.0", - "webpack-dev-middleware": "7.4.2", - "webpack-dev-server": "5.2.0", - "webpack-merge": "6.0.1", - "webpack-subresource-integrity": "5.1.0", "yargs": "17.7.2", "yargs-parser": "21.1.1", "zone.js": "^0.15.0" diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 5c792deac174..bd9cae8ef739 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -134,8 +134,33 @@ ts_project( ":node_modules/@angular-devkit/core", ":node_modules/@angular/build", ":node_modules/@angular/ssr", + ":node_modules/@babel/plugin-transform-async-generator-functions", + ":node_modules/@babel/plugin-transform-async-to-generator", + ":node_modules/@babel/plugin-transform-runtime", + ":node_modules/@babel/preset-env", + ":node_modules/@babel/runtime", + ":node_modules/@discoveryjs/json-ext", ":node_modules/@ngtools/webpack", ":node_modules/@vitejs/plugin-basic-ssl", + ":node_modules/autoprefixer", + ":node_modules/babel-loader", + ":node_modules/copy-webpack-plugin", + ":node_modules/css-loader", + ":node_modules/less", + ":node_modules/less-loader", + ":node_modules/license-webpack-plugin", + ":node_modules/loader-utils", + ":node_modules/mini-css-extract-plugin", + ":node_modules/postcss-loader", + ":node_modules/resolve-url-loader", + ":node_modules/sass-loader", + ":node_modules/source-map-loader", + ":node_modules/terser", + ":node_modules/webpack", + ":node_modules/webpack-dev-middleware", + ":node_modules/webpack-dev-server", + ":node_modules/webpack-merge", + ":node_modules/webpack-subresource-integrity", "//:node_modules/@ampproject/remapping", "//:node_modules/@angular/common", "//:node_modules/@angular/compiler-cli", @@ -147,12 +172,6 @@ ts_project( "//:node_modules/@babel/generator", "//:node_modules/@babel/helper-annotate-as-pure", "//:node_modules/@babel/helper-split-export-declaration", - "//:node_modules/@babel/plugin-transform-async-generator-functions", - "//:node_modules/@babel/plugin-transform-async-to-generator", - "//:node_modules/@babel/plugin-transform-runtime", - "//:node_modules/@babel/preset-env", - "//:node_modules/@babel/runtime", - "//:node_modules/@discoveryjs/json-ext", "//:node_modules/@types/babel__core", "//:node_modules/@types/babel__generator", "//:node_modules/@types/browser-sync", @@ -166,12 +185,8 @@ ts_project( "//:node_modules/@web/test-runner", "//:node_modules/ajv", "//:node_modules/ansi-colors", - "//:node_modules/autoprefixer", - "//:node_modules/babel-loader", "//:node_modules/browser-sync", "//:node_modules/browserslist", - "//:node_modules/copy-webpack-plugin", - "//:node_modules/css-loader", "//:node_modules/esbuild", "//:node_modules/esbuild-wasm", "//:node_modules/fast-glob", @@ -180,33 +195,18 @@ ts_project( "//:node_modules/jsonc-parser", "//:node_modules/karma", "//:node_modules/karma-source-map-support", - "//:node_modules/less", - "//:node_modules/less-loader", - "//:node_modules/license-webpack-plugin", - "//:node_modules/loader-utils", - "//:node_modules/mini-css-extract-plugin", "//:node_modules/ng-packagr", "//:node_modules/open", "//:node_modules/ora", "//:node_modules/piscina", "//:node_modules/postcss", - "//:node_modules/postcss-loader", - "//:node_modules/resolve-url-loader", "//:node_modules/rxjs", "//:node_modules/sass", - "//:node_modules/sass-loader", "//:node_modules/semver", - "//:node_modules/source-map-loader", "//:node_modules/source-map-support", - "//:node_modules/terser", "//:node_modules/tree-kill", "//:node_modules/tslib", "//:node_modules/typescript", - "//:node_modules/webpack", - "//:node_modules/webpack-dev-middleware", - "//:node_modules/webpack-dev-server", - "//:node_modules/webpack-merge", - "//:node_modules/webpack-subresource-integrity", ], ) @@ -227,11 +227,11 @@ ts_project( deps = [ ":build_angular", ":build_angular_test_utils", + ":node_modules/webpack", "//:node_modules/@types/node", "//:node_modules/fast-glob", "//:node_modules/prettier", "//:node_modules/typescript", - "//:node_modules/webpack", "//packages/angular_devkit/architect/testing", "//packages/angular_devkit/core", ], @@ -335,7 +335,7 @@ LARGE_SPECS = { "//:node_modules/karma-jasmine", "//:node_modules/karma-jasmine-html-reporter", "//:node_modules/puppeteer", - "//:node_modules/webpack", + ":node_modules/webpack", ], }, "protractor": { diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel index 85e41f44660c..f8f7be349938 100644 --- a/packages/angular_devkit/build_webpack/BUILD.bazel +++ b/packages/angular_devkit/build_webpack/BUILD.bazel @@ -48,10 +48,10 @@ ts_project( module_name = "@angular-devkit/build-webpack", deps = [ ":node_modules/@angular-devkit/architect", + ":node_modules/webpack", + ":node_modules/webpack-dev-server", "//:node_modules/@types/node", "//:node_modules/rxjs", - "//:node_modules/webpack", - "//:node_modules/webpack-dev-server", ], ) diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 44da2f608890..5f7a3b82d6f8 100644 --- a/packages/angular_devkit/build_webpack/package.json +++ b/packages/angular_devkit/build_webpack/package.json @@ -22,7 +22,8 @@ "devDependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", - "webpack": "5.98.0" + "webpack": "5.98.0", + "webpack-dev-server": "5.2.0" }, "peerDependencies": { "webpack": "^5.30.0", diff --git a/packages/ngtools/webpack/BUILD.bazel b/packages/ngtools/webpack/BUILD.bazel index 68006eee2f03..d4b55e26c9bc 100644 --- a/packages/ngtools/webpack/BUILD.bazel +++ b/packages/ngtools/webpack/BUILD.bazel @@ -31,10 +31,10 @@ ts_project( ], module_name = "@ngtools/webpack", deps = [ + ":node_modules/webpack", "//:node_modules/@angular/compiler-cli", "//:node_modules/@types/node", "//:node_modules/typescript", - "//:node_modules/webpack", ], ) @@ -61,6 +61,7 @@ jasmine_test( data = [ ":webpack_test_lib", # Needed at runtime for runtime TS compilations performed by tests. + ":node_modules/webpack", "//:node_modules/tslib", ], ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0e3e0d068d6..138029931837 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,30 +77,12 @@ importers: '@babel/plugin-syntax-import-attributes': specifier: 7.26.0 version: 7.26.0(@babel/core@7.26.10) - '@babel/plugin-transform-async-generator-functions': - specifier: 7.26.8 - version: 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-async-to-generator': - specifier: 7.25.9 - version: 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-runtime': - specifier: 7.26.10 - version: 7.26.10(@babel/core@7.26.10) - '@babel/preset-env': - specifier: 7.26.9 - version: 7.26.9(@babel/core@7.26.10) - '@babel/runtime': - specifier: 7.26.10 - version: 7.26.10 '@bazel/bazelisk': specifier: 1.25.0 version: 1.25.0 '@bazel/buildifier': specifier: 8.0.3 version: 8.0.3 - '@discoveryjs/json-ext': - specifier: 0.6.3 - version: 0.6.3 '@eslint/compat': specifier: 1.2.7 version: 1.2.7(eslint@9.22.0(jiti@1.21.7)) @@ -224,12 +206,6 @@ importers: ansi-colors: specifier: 4.1.3 version: 4.1.3 - autoprefixer: - specifier: 10.4.21 - version: 10.4.21(postcss@8.5.3) - babel-loader: - specifier: 10.0.0 - version: 10.0.0(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.1)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -245,12 +221,6 @@ importers: chokidar: specifier: 4.0.3 version: 4.0.3 - copy-webpack-plugin: - specifier: 13.0.0 - version: 13.0.0(webpack@5.98.0(esbuild@0.25.1)) - css-loader: - specifier: 7.1.2 - version: 7.1.2(webpack@5.98.0(esbuild@0.25.1)) debug: specifier: ^4.1.1 version: 4.4.0(supports-color@10.0.0) @@ -335,30 +305,18 @@ importers: less: specifier: 4.2.2 version: 4.2.2 - less-loader: - specifier: 12.2.0 - version: 12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.1)) - license-webpack-plugin: - specifier: 4.0.2 - version: 4.0.2(webpack@5.98.0(esbuild@0.25.1)) listr2: specifier: 8.2.5 version: 8.2.5 lmdb: specifier: 3.2.6 version: 3.2.6 - loader-utils: - specifier: 3.3.1 - version: 3.3.1 lodash: specifier: ^4.17.21 version: 4.17.21 magic-string: specifier: 0.30.17 version: 0.30.17 - mini-css-extract-plugin: - specifier: 2.9.2 - version: 2.9.2(webpack@5.98.0(esbuild@0.25.1)) mrmime: specifier: 2.0.1 version: 2.0.1 @@ -395,9 +353,6 @@ importers: postcss: specifier: 8.5.3 version: 8.5.3 - postcss-loader: - specifier: 8.1.1 - version: 8.1.1(postcss@8.5.3)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.25.1)) prettier: specifier: ^3.0.0 version: 3.5.3 @@ -410,9 +365,6 @@ importers: quicktype-core: specifier: 23.0.171 version: 23.0.171(encoding@0.1.13) - resolve-url-loader: - specifier: 5.0.0 - version: 5.0.0 rollup: specifier: 4.35.0 version: 4.35.0 @@ -428,9 +380,6 @@ importers: sass: specifier: 1.85.1 version: 1.85.1 - sass-loader: - specifier: 16.0.5 - version: 16.0.5(sass@1.85.1)(webpack@5.98.0(esbuild@0.25.1)) semver: specifier: 7.7.1 version: 7.7.1 @@ -440,9 +389,6 @@ importers: source-map: specifier: 0.7.4 version: 0.7.4 - source-map-loader: - specifier: 5.0.0 - version: 5.0.0(webpack@5.98.0(esbuild@0.25.1)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -452,9 +398,6 @@ importers: tar: specifier: ^7.0.0 version: 7.4.3 - terser: - specifier: 5.39.0 - version: 5.39.0 tinyglobby: specifier: 0.2.12 version: 0.2.12 @@ -485,21 +428,6 @@ importers: watchpack: specifier: 2.4.2 version: 2.4.2 - webpack: - specifier: 5.98.0 - version: 5.98.0(esbuild@0.25.1) - webpack-dev-middleware: - specifier: 7.4.2 - version: 7.4.2(webpack@5.98.0(esbuild@0.25.1)) - webpack-dev-server: - specifier: 5.2.0 - version: 5.2.0(debug@4.4.0)(webpack@5.98.0(esbuild@0.25.1)) - webpack-merge: - specifier: 6.0.1 - version: 6.0.1 - webpack-subresource-integrity: - specifier: 5.1.0 - version: 5.1.0(webpack@5.98.0(esbuild@0.25.1)) yargs: specifier: 17.7.2 version: 17.7.2 @@ -950,6 +878,9 @@ importers: webpack: specifier: 5.98.0 version: 5.98.0(esbuild@0.25.1) + webpack-dev-server: + specifier: 5.2.0 + version: 5.2.0(debug@4.4.0)(webpack@5.98.0(esbuild@0.25.1)) packages/angular_devkit/core: dependencies: From f126f8d34b087dd3a916dfb93cd255aac4d6c309 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 12 Mar 2025 09:29:13 -0400 Subject: [PATCH 013/160] fix(@schematics/angular): ensure module discovery checks for an NgModule decorator The Angular module discovery logic previously did not check for the presence of a potential `@NgModule` decorator. This can cause false positive results for files with a module-like naming pattern. --- .../schematics/angular/utility/find-module.ts | 2 +- .../angular/utility/find-module_spec.ts | 27 ++++++++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/schematics/angular/utility/find-module.ts b/packages/schematics/angular/utility/find-module.ts index 71f4c41926a5..69e10dc1368e 100644 --- a/packages/schematics/angular/utility/find-module.ts +++ b/packages/schematics/angular/utility/find-module.ts @@ -59,7 +59,7 @@ export function findModuleFromOptions(host: Tree, options: ModuleOptions): Path ); for (const sc of candidateFiles) { - if (host.exists(sc)) { + if (host.exists(sc) && host.readText(sc).includes('@NgModule')) { return normalize(sc); } } diff --git a/packages/schematics/angular/utility/find-module_spec.ts b/packages/schematics/angular/utility/find-module_spec.ts index 7570121ea790..9680f15949c8 100644 --- a/packages/schematics/angular/utility/find-module_spec.ts +++ b/packages/schematics/angular/utility/find-module_spec.ts @@ -92,16 +92,25 @@ describe('find-module', () => { options = { name: 'foo' }; }); - it('should find a module', () => { - tree.create('/projects/my-proj/src/app.module.ts', ''); + it('should find a module with a decorator', () => { + tree.create('/projects/my-proj/src/app.module.ts', '@NgModule'); options.module = 'app.module.ts'; options.path = '/projects/my-proj/src'; const modPath = findModuleFromOptions(tree, options) as string; expect(modPath).toEqual('/projects/my-proj/src/app.module.ts'); }); + it('should not find module-like file without a decorator', () => { + tree.create('/projects/my-proj/src/app.module.ts', ''); + options.module = 'app.module.ts'; + options.path = '/projects/my-proj/src'; + expect(() => findModuleFromOptions(tree, options) as string).toThrowError( + /Specified module 'app.module.ts' does not exist/, + ); + }); + it('should find a module when name has underscore', () => { - tree.create('/projects/my-proj/src/feature_module/app_test.module.ts', ''); + tree.create('/projects/my-proj/src/feature_module/app_test.module.ts', '@NgModule'); options.path = '/projects/my-proj/src'; options.name = 'feature_module/new_component'; const modPath = findModuleFromOptions(tree, options) as string; @@ -109,7 +118,7 @@ describe('find-module', () => { }); it('should find a module when name has uppercase', () => { - tree.create('/projects/my-proj/src/featureModule/appTest.module.ts', ''); + tree.create('/projects/my-proj/src/featureModule/appTest.module.ts', '@NgModule'); options.path = '/projects/my-proj/src'; options.name = 'featureModule/newComponent'; const modPath = findModuleFromOptions(tree, options) as string; @@ -117,7 +126,7 @@ describe('find-module', () => { }); it('should find a module if flat is true', () => { - tree.create('/projects/my-proj/src/module/app_test.module.ts', ''); + tree.create('/projects/my-proj/src/module/app_test.module.ts', '@NgModule'); options.path = '/projects/my-proj/src'; options.flat = true; options.name = '/module/directive'; @@ -126,7 +135,7 @@ describe('find-module', () => { }); it('should find a module in a sub dir', () => { - tree.create('/projects/my-proj/src/admin/foo.module.ts', ''); + tree.create('/projects/my-proj/src/admin/foo.module.ts', '@NgModule'); options.name = 'other/test'; options.module = 'admin/foo'; options.path = '/projects/my-proj/src'; @@ -135,7 +144,7 @@ describe('find-module', () => { }); it('should find a module in a sub dir (2)', () => { - tree.create('/projects/my-proj/src/admin/foo.module.ts', ''); + tree.create('/projects/my-proj/src/admin/foo.module.ts', '@NgModule'); options.name = 'admin/hello'; options.module = 'foo'; options.path = '/projects/my-proj/src'; @@ -144,7 +153,7 @@ describe('find-module', () => { }); it('should find a module using custom ext', () => { - tree.create('/projects/my-proj/src/app_module.ts', ''); + tree.create('/projects/my-proj/src/app_module.ts', '@NgModule'); options.module = 'app'; options.path = '/projects/my-proj/src'; options.moduleExt = '_module.ts'; @@ -164,7 +173,7 @@ describe('find-module', () => { }); it('should ignore custom ext if module or ${module}.ts exists', () => { - tree.create('/projects/my-proj/src/app.module.ts', ''); + tree.create('/projects/my-proj/src/app.module.ts', '@NgModule'); options.path = '/projects/my-proj/src'; options.moduleExt = '_module.ts'; let modPath; From 23fc8e1e176f23442876b086bff52dd5f35abbc0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 10 Mar 2025 11:56:47 -0400 Subject: [PATCH 014/160] fix(@schematics/angular): generate components without a `.component` extension/type To align with the updated style guide, Angular v20 will generate components without a `.component` file extension type for all component related files by default. Projects will automatically use this naming convention. Projects can however opt-out by setting the `type` option to `Component` for the component schematic. This can be done as a default in the `angular.json` or directly on the commandline via `--type=Component` when executing `ng generate`. As an example, `app.component.css` will now be named `app.css`. Additionally, the TypeScript class name will be `App` instead of the previous `AppComponent`. --- .../schematics/angular/app-shell/index.ts | 20 ++---- .../angular/app-shell/index_spec.ts | 18 +++-- ....ng.html.template => app.ng.html.template} | 0 .../src/app/app.module.ts.template | 6 +- ....spec.ts.template => app.spec.ts.template} | 12 ++-- ....component.ts.template => app.ts.template} | 6 +- ....spec.ts.template => app.spec.ts.template} | 12 ++-- ....component.ts.template => app.ts.template} | 6 +- .../standalone-files/src/main.ts.template | 4 +- .../angular/application/index_spec.ts | 62 ++++++++--------- .../schematics/angular/component/index.ts | 3 + .../schematics/angular/component/schema.json | 3 +- .../files/src/__entryFile__.ts.template | 2 +- .../schematics/angular/library/index_spec.ts | 20 +++--- ...ame@dasherize__-routing.module.ts.template | 4 +- .../__name@dasherize__.module.ts.template | 2 +- .../schematics/angular/module/index_spec.ts | 28 ++++---- .../schematics/angular/ng-new/index_spec.ts | 4 +- .../app/app.module.server.ts.template | 4 +- .../standalone-src/main.server.ts.template | 4 +- .../app/app.module.server.ts.template | 4 +- .../standalone-src/main.server.ts.template | 4 +- .../schematics/angular/server/index_spec.ts | 2 +- .../schematics/angular/web-worker/index.ts | 2 +- .../angular/web-worker/index_spec.ts | 2 +- tests/legacy-cli/e2e/tests/basic/aot.ts | 2 +- tests/legacy-cli/e2e/tests/basic/rebuild.ts | 8 +-- .../app-shell/app-shell-with-schematic.ts | 2 +- .../app-shell-with-service-worker.ts | 2 +- tests/legacy-cli/e2e/tests/build/css-urls.ts | 2 +- .../e2e/tests/build/lazy-load-syntax.ts | 2 +- .../build/library/lib-consumption-full-jit.ts | 2 +- .../library/lib-consumption-sourcemaps.ts | 2 +- .../lib-unused-decorated-class-treeshake.ts | 2 +- .../e2e/tests/build/library/setup.ts | 10 +-- .../prerender/discover-routes-ngmodule.ts | 12 ++-- .../prerender/discover-routes-standalone.ts | 18 ++--- .../build/prerender/error-with-sourcemaps.ts | 10 +-- .../build/prerender/http-requests-assets.ts | 8 +-- .../express-engine-csp-nonce.ts | 6 +- .../express-engine-ngmodule.ts | 2 +- .../express-engine-standalone.ts | 6 +- ...outes-output-mode-server-i18n-base-href.ts | 12 ++-- ...routes-output-mode-server-i18n-sub-path.ts | 12 ++-- .../server-routes-output-mode-server-i18n.ts | 12 ++-- ...tes-output-mode-server-platform-neutral.ts | 16 ++--- .../server-routes-output-mode-server.ts | 24 +++---- ...er-routes-output-mode-static-http-calls.ts | 8 +-- ...s-output-mode-static-i18n_APP_BASE_HREF.ts | 10 +-- .../server-routes-output-mode-static.ts | 14 ++-- .../server-routes-preload-links.ts | 69 +++++++------------ .../e2e/tests/build/styles/include-paths.ts | 10 +-- .../legacy-cli/e2e/tests/build/styles/less.ts | 8 +-- .../e2e/tests/build/styles/loaders.ts | 6 +- .../legacy-cli/e2e/tests/build/styles/sass.ts | 6 +- .../build/styles/scss-partial-resolution.ts | 6 +- .../legacy-cli/e2e/tests/build/styles/scss.ts | 6 +- .../e2e/tests/build/styles/tailwind-v2.ts | 2 +- .../e2e/tests/build/styles/tailwind-v3.ts | 2 +- tests/legacy-cli/e2e/tests/build/ts-paths.ts | 4 +- tests/legacy-cli/e2e/tests/build/wasm-esm.ts | 8 +-- tests/legacy-cli/e2e/tests/build/worker.ts | 4 +- .../serve/ssr-http-requests-assets.ts | 8 +-- .../generate/component/component-basic.ts | 8 +-- .../generate/component/component-child-dir.ts | 8 +-- .../generate/component/component-flat.ts | 8 +-- .../component/component-inline-template.ts | 10 ++- .../generate/component/component-not-flat.ts | 8 +-- .../generate/component/component-path-case.ts | 16 ++--- .../generate/component/component-prefix.ts | 6 +- .../e2e/tests/generate/generate-name-check.ts | 8 +-- .../e2e/tests/generate/schematic-defaults.ts | 5 +- .../e2e/tests/i18n/extract-ivy-disk-cache.ts | 13 ++-- .../e2e/tests/i18n/extract-ivy-libraries.ts | 22 ++---- .../legacy-cli/e2e/tests/i18n/extract-ivy.ts | 13 ++-- .../ivy-localize-app-shell-service-worker.ts | 2 +- .../e2e/tests/i18n/ivy-localize-app-shell.ts | 10 +-- tests/legacy-cli/e2e/tests/i18n/setup.ts | 16 ++--- tests/legacy-cli/e2e/tests/misc/browsers.ts | 2 +- .../misc/duplicate-command-line-option.ts | 2 +- .../e2e/tests/misc/es2015-nometa.ts | 8 +-- .../e2e/tests/misc/forwardref-es2015.ts | 18 ++--- .../e2e/tests/misc/trusted-types.ts | 2 +- .../tests/test/test-code-coverage-exclude.ts | 6 +- .../e2e/tests/test/test-fail-single-run.ts | 2 +- .../e2e/tests/test/test-jasmine-clock.ts | 10 +-- .../legacy-cli/e2e/tests/test/test-scripts.ts | 16 ++--- .../e2e/tests/test/test-sourcemap.ts | 4 +- .../e2e/tests/vite/ssr-entry-express.ts | 10 +-- .../e2e/tests/vite/ssr-entry-fastify.ts | 10 +-- .../legacy-cli/e2e/tests/vite/ssr-entry-h3.ts | 10 +-- .../e2e/tests/vite/ssr-entry-hono.ts | 10 +-- .../e2e/tests/vite/ssr-error-stack.ts | 4 +- .../legacy-cli/e2e/tests/vite/ssr-with-ssl.ts | 8 +-- 94 files changed, 399 insertions(+), 453 deletions(-) rename packages/schematics/angular/application/files/common-files/src/app/{app.component.ng.html.template => app.ng.html.template} (100%) rename packages/schematics/angular/application/files/module-files/src/app/{app.component.spec.ts.template => app.spec.ts.template} (79%) rename packages/schematics/angular/application/files/module-files/src/app/{app.component.ts.template => app.ts.template} (72%) rename packages/schematics/angular/application/files/standalone-files/src/app/{app.component.spec.ts.template => app.spec.ts.template} (72%) rename packages/schematics/angular/application/files/standalone-files/src/app/{app.component.ts.template => app.ts.template} (74%) diff --git a/packages/schematics/angular/app-shell/index.ts b/packages/schematics/angular/app-shell/index.ts index 25b4094b51ca..683ab4baba1c 100644 --- a/packages/schematics/angular/app-shell/index.ts +++ b/packages/schematics/angular/app-shell/index.ts @@ -182,7 +182,7 @@ function addServerRoutes(options: AppShellOptions): Rule { .filter((node) => node.kind === ts.SyntaxKind.ImportDeclaration) .sort((a, b) => a.getStart() - b.getStart()); const insertPosition = imports[imports.length - 1].getEnd(); - const routeText = `\n\nconst routes: Routes = [ { path: '${APP_SHELL_ROUTE}', component: AppShellComponent }];`; + const routeText = `\n\nconst routes: Routes = [ { path: '${APP_SHELL_ROUTE}', component: AppShell }];`; recorder.insertRight(insertPosition, routeText); host.commitUpdate(recorder); } @@ -262,7 +262,7 @@ function addStandaloneServerRoute(options: AppShellOptions): Rule { multi: true, useValue: [{ path: '${APP_SHELL_ROUTE}', - component: AppShellComponent + component: AppShell }] }\n `, ]; @@ -270,12 +270,7 @@ function addStandaloneServerRoute(options: AppShellOptions): Rule { recorder.insertRight(providersLiteral.getStart(), `[\n${updatedProvidersString.join(',\n')}]`); applyToUpdateRecorder(recorder, [ - insertImport( - configSourceFile, - configFilePath, - 'AppShellComponent', - './app-shell/app-shell.component', - ), + insertImport(configSourceFile, configFilePath, 'AppShell', './app-shell/app-shell'), ]); host.commitUpdate(recorder); }; @@ -315,16 +310,11 @@ function addServerRoutingConfig(options: AppShellOptions, isStandalone: boolean) } recorder = host.beginUpdate(configFilePath); - recorder.insertLeft(functionCall.end - 1, `, withAppShell(AppShellComponent)`); + recorder.insertLeft(functionCall.end - 1, `, withAppShell(AppShell)`); applyToUpdateRecorder(recorder, [ insertImport(configSourceFile, configFilePath, 'withAppShell', '@angular/ssr'), - insertImport( - configSourceFile, - configFilePath, - 'AppShellComponent', - './app-shell/app-shell.component', - ), + insertImport(configSourceFile, configFilePath, 'AppShell', './app-shell/app-shell'), ]); host.commitUpdate(recorder); diff --git a/packages/schematics/angular/app-shell/index_spec.ts b/packages/schematics/angular/app-shell/index_spec.ts index 77c9742a73ec..bc110813a0be 100644 --- a/packages/schematics/angular/app-shell/index_spec.ts +++ b/packages/schematics/angular/app-shell/index_spec.ts @@ -82,14 +82,14 @@ describe('App Shell Schematic', () => { it('should work if server config was added prior to running the app-shell schematic', async () => { let tree = await schematicRunner.runSchematic('server', defaultOptions, appTree); tree = await schematicRunner.runSchematic('app-shell', defaultOptions, tree); - expect(tree.exists('/projects/bar/src/app/app-shell/app-shell.component.ts')).toBe(true); + expect(tree.exists('/projects/bar/src/app/app-shell/app-shell.ts')).toBe(true); }); it('should create the shell component', async () => { const tree = await schematicRunner.runSchematic('app-shell', defaultOptions, appTree); - expect(tree.exists('/projects/bar/src/app/app-shell/app-shell.component.ts')).toBe(true); + expect(tree.exists('/projects/bar/src/app/app-shell/app-shell.ts')).toBe(true); const content = tree.readContent('/projects/bar/src/app/app.module.server.ts'); - expect(content).toMatch(/app-shell\.component/); + expect(content).toMatch(/app-shell/); }); }); @@ -117,27 +117,25 @@ describe('App Shell Schematic', () => { it('should create the shell component', async () => { const tree = await schematicRunner.runSchematic('app-shell', defaultOptions, appTree); - expect(tree.exists('/projects/bar/src/app/app-shell/app-shell.component.ts')).toBe(true); + expect(tree.exists('/projects/bar/src/app/app-shell/app-shell.ts')).toBe(true); const content = tree.readContent('/projects/bar/src/app/app.config.server.ts'); - expect(content).toMatch(/app-shell\.component/); + expect(content).toMatch(/app-shell/); }); it(`should update the 'provideServerRouting' call to include 'withAppShell'`, async () => { const tree = await schematicRunner.runSchematic('app-shell', defaultOptions, appTree); const content = tree.readContent('/projects/bar/src/app/app.config.server.ts'); expect(tags.oneLine`${content}`).toContain( - tags.oneLine`provideServerRouting(serverRoutes, withAppShell(AppShellComponent))`, + tags.oneLine`provideServerRouting(serverRoutes, withAppShell(AppShell))`, ); }); - it(`should add import to 'AppShellComponent'`, async () => { + it(`should add import to 'AppShell'`, async () => { const tree = await schematicRunner.runSchematic('app-shell', defaultOptions, appTree); const filePath = '/projects/bar/src/app/app.config.server.ts'; const content = tree.readContent(filePath); - expect(content).toContain( - `import { AppShellComponent } from './app-shell/app-shell.component';`, - ); + expect(content).toContain(`import { AppShell } from './app-shell/app-shell';`); }); }); }); diff --git a/packages/schematics/angular/application/files/common-files/src/app/app.component.ng.html.template b/packages/schematics/angular/application/files/common-files/src/app/app.ng.html.template similarity index 100% rename from packages/schematics/angular/application/files/common-files/src/app/app.component.ng.html.template rename to packages/schematics/angular/application/files/common-files/src/app/app.ng.html.template diff --git a/packages/schematics/angular/application/files/module-files/src/app/app.module.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app.module.ts.template index 4279b6581c35..336e06590fbf 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app.module.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app.module.ts.template @@ -2,17 +2,17 @@ import { NgModule<% if(experimentalZoneless) { %>, provideExperimentalZonelessCh import { BrowserModule } from '@angular/platform-browser'; <% if (routing) { %> import { AppRoutingModule } from './app-routing.module';<% } %> -import { AppComponent } from './app.component'; +import { App } from './app'; @NgModule({ declarations: [ - AppComponent + App ], imports: [ BrowserModule<% if (routing) { %>, AppRoutingModule<% } %> ], providers: [<% if (experimentalZoneless) { %>provideExperimentalZonelessChangeDetection()<% } %>], - bootstrap: [AppComponent] + bootstrap: [App] }) export class AppModule { } diff --git a/packages/schematics/angular/application/files/module-files/src/app/app.component.spec.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app.spec.ts.template similarity index 79% rename from packages/schematics/angular/application/files/module-files/src/app/app.component.spec.ts.template rename to packages/schematics/angular/application/files/module-files/src/app/app.spec.ts.template index 1575222d09d9..d9e11422c77e 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app.component.spec.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app.spec.ts.template @@ -1,35 +1,35 @@ <% if(experimentalZoneless) { %>import { provideExperimentalZonelessChangeDetection } from '@angular/core'; <% } %>import { TestBed } from '@angular/core/testing';<% if (routing) { %> import { RouterModule } from '@angular/router';<% } %> -import { AppComponent } from './app.component'; +import { App } from './app'; -describe('AppComponent', () => { +describe('App', () => { beforeEach(async () => { await TestBed.configureTestingModule({<% if (routing) { %> imports: [ RouterModule.forRoot([]) ],<% } %> declarations: [ - AppComponent + App ],<% if(experimentalZoneless) { %> providers: [provideExperimentalZonelessChangeDetection()]<% } %> }).compileComponents(); }); it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); + const fixture = TestBed.createComponent(App); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); it(`should have as title '<%= name %>'`, () => { - const fixture = TestBed.createComponent(AppComponent); + const fixture = TestBed.createComponent(App); const app = fixture.componentInstance; expect(app.title).toEqual('<%= name %>'); }); it('should render title', () => { - const fixture = TestBed.createComponent(AppComponent); + const fixture = TestBed.createComponent(App); fixture.detectChanges(); const compiled = fixture.nativeElement as HTMLElement; expect(compiled.querySelector('h1')?.textContent).toContain('Hello, <%= name %>'); diff --git a/packages/schematics/angular/application/files/module-files/src/app/app.component.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app.ts.template similarity index 72% rename from packages/schematics/angular/application/files/module-files/src/app/app.component.ts.template rename to packages/schematics/angular/application/files/module-files/src/app/app.ts.template index 82d5e35b64a6..df7e3d72767f 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app.component.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app.ts.template @@ -9,11 +9,11 @@ import { Component } from '@angular/core'; %><% } %> `,<% } else { %> - templateUrl: './app.component.ng.html',<% } %> + templateUrl: './app.ng.html',<% } %> standalone: false,<% if(inlineStyle) { %> styles: []<% } else { %> - styleUrl: './app.component.<%= style %>'<% } %> + styleUrl: './app.<%= style %>'<% } %> }) -export class AppComponent { +export class App { title = '<%= name %>'; } diff --git a/packages/schematics/angular/application/files/standalone-files/src/app/app.component.spec.ts.template b/packages/schematics/angular/application/files/standalone-files/src/app/app.spec.ts.template similarity index 72% rename from packages/schematics/angular/application/files/standalone-files/src/app/app.component.spec.ts.template rename to packages/schematics/angular/application/files/standalone-files/src/app/app.spec.ts.template index 300f7b6466ae..8d52e127f1dd 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/app/app.component.spec.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/app/app.spec.ts.template @@ -1,29 +1,29 @@ <% if(experimentalZoneless) { %>import { provideExperimentalZonelessChangeDetection } from '@angular/core'; <% } %>import { TestBed } from '@angular/core/testing'; -import { AppComponent } from './app.component'; +import { App } from './app'; -describe('AppComponent', () => { +describe('App', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [AppComponent],<% if(experimentalZoneless) { %> + imports: [App],<% if(experimentalZoneless) { %> providers: [provideExperimentalZonelessChangeDetection()]<% } %> }).compileComponents(); }); it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); + const fixture = TestBed.createComponent(App); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); it(`should have the '<%= name %>' title`, () => { - const fixture = TestBed.createComponent(AppComponent); + const fixture = TestBed.createComponent(App); const app = fixture.componentInstance; expect(app.title).toEqual('<%= name %>'); }); it('should render title', () => { - const fixture = TestBed.createComponent(AppComponent); + const fixture = TestBed.createComponent(App); fixture.detectChanges(); const compiled = fixture.nativeElement as HTMLElement; expect(compiled.querySelector('h1')?.textContent).toContain('Hello, <%= name %>'); diff --git a/packages/schematics/angular/application/files/standalone-files/src/app/app.component.ts.template b/packages/schematics/angular/application/files/standalone-files/src/app/app.ts.template similarity index 74% rename from packages/schematics/angular/application/files/standalone-files/src/app/app.component.ts.template rename to packages/schematics/angular/application/files/standalone-files/src/app/app.ts.template index 29ec4bbd2c05..72ba48ff0ce6 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/app/app.component.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/app/app.ts.template @@ -11,10 +11,10 @@ import { RouterOutlet } from '@angular/router';<% } %> %><% } %> `,<% } else { %> - templateUrl: './app.component.ng.html',<% } if(inlineStyle) { %> + templateUrl: './app.ng.html',<% } if(inlineStyle) { %> styles: [],<% } else { %> - styleUrl: './app.component.<%= style %>'<% } %> + styleUrl: './app.<%= style %>'<% } %> }) -export class AppComponent { +export class App { title = '<%= name %>'; } diff --git a/packages/schematics/angular/application/files/standalone-files/src/main.ts.template b/packages/schematics/angular/application/files/standalone-files/src/main.ts.template index 35b00f346331..5df75f9c838e 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/main.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/main.ts.template @@ -1,6 +1,6 @@ import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; -import { AppComponent } from './app/app.component'; +import { App } from './app/app'; -bootstrapApplication(AppComponent, appConfig) +bootstrapApplication(App, appConfig) .catch((err) => console.error(err)); diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 50f6a0650b96..036ef03f0ce7 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -55,10 +55,10 @@ describe('Application Schematic', () => { '/projects/foo/src/main.ts', '/projects/foo/src/styles.css', '/projects/foo/src/app/app.module.ts', - '/projects/foo/src/app/app.component.css', - '/projects/foo/src/app/app.component.ng.html', - '/projects/foo/src/app/app.component.spec.ts', - '/projects/foo/src/app/app.component.ts', + '/projects/foo/src/app/app.css', + '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.spec.ts', + '/projects/foo/src/app/app.ts', ]), ); }); @@ -265,10 +265,10 @@ describe('Application Schematic', () => { '/src/index.html', '/src/main.ts', '/src/styles.css', - '/src/app/app.component.css', - '/src/app/app.component.ng.html', - '/src/app/app.component.spec.ts', - '/src/app/app.component.ts', + '/src/app/app.css', + '/src/app/app.ng.html', + '/src/app/app.spec.ts', + '/src/app/app.ts', ]), ); }); @@ -446,9 +446,9 @@ describe('Application Schematic', () => { const files = tree.files; [ '/projects/foo/tsconfig.spec.json', - '/projects/foo/src/app/app.component.css', - '/projects/foo/src/app/app.component.ng.html', - '/projects/foo/src/app/app.component.spec.ts', + '/projects/foo/src/app/app.css', + '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.spec.ts', ].forEach((x) => expect(files).not.toContain(x)); expect(files).toEqual( @@ -458,7 +458,7 @@ describe('Application Schematic', () => { '/projects/foo/src/index.html', '/projects/foo/src/main.ts', '/projects/foo/src/styles.css', - '/projects/foo/src/app/app.component.ts', + '/projects/foo/src/app/app.ts', ]), ); }); @@ -472,8 +472,8 @@ describe('Application Schematic', () => { '/projects/foo/tsconfig.spec.json', '/projects/foo/karma.conf.js', '/projects/foo/src/test.ts', - '/projects/foo/src/app/app.component.ng.html', - '/projects/foo/src/app/app.component.spec.ts', + '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.spec.ts', ].forEach((x) => expect(files).not.toContain(x)); expect(files).toEqual( @@ -483,8 +483,8 @@ describe('Application Schematic', () => { '/projects/foo/src/index.html', '/projects/foo/src/main.ts', '/projects/foo/src/styles.css', - '/projects/foo/src/app/app.component.css', - '/projects/foo/src/app/app.component.ts', + '/projects/foo/src/app/app.css', + '/projects/foo/src/app/app.ts', ]), ); }); @@ -498,8 +498,8 @@ describe('Application Schematic', () => { '/projects/foo/tsconfig.spec.json', '/projects/foo/karma.conf.js', '/projects/foo/src/test.ts', - '/projects/foo/src/app/app.component.css', - '/projects/foo/src/app/app.component.spec.ts', + '/projects/foo/src/app/app.css', + '/projects/foo/src/app/app.spec.ts', ].forEach((x) => expect(files).not.toContain(x)); expect(files).toEqual( @@ -509,8 +509,8 @@ describe('Application Schematic', () => { '/projects/foo/src/index.html', '/projects/foo/src/main.ts', '/projects/foo/src/styles.css', - '/projects/foo/src/app/app.component.ng.html', - '/projects/foo/src/app/app.component.ts', + '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.ts', ]), ); }); @@ -530,10 +530,10 @@ describe('Application Schematic', () => { '/projects/foo/src/main.ts', '/projects/foo/src/styles.css', '/projects/foo/src/app/app.config.ts', - '/projects/foo/src/app/app.component.css', - '/projects/foo/src/app/app.component.ng.html', - '/projects/foo/src/app/app.component.spec.ts', - '/projects/foo/src/app/app.component.ts', + '/projects/foo/src/app/app.css', + '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.spec.ts', + '/projects/foo/src/app/app.ts', ]), ); }); @@ -557,7 +557,7 @@ describe('Application Schematic', () => { it('should create a standalone component', async () => { const options = { ...defaultOptions, standalone: true }; const tree = await schematicRunner.runSchematic('application', options, workspaceTree); - const component = tree.readContent('/projects/foo/src/app/app.component.ts'); + const component = tree.readContent('/projects/foo/src/app/app.ts'); expect(component).not.toContain('standalone'); }); @@ -569,7 +569,7 @@ describe('Application Schematic', () => { expect(tree.files).toContain('/projects/foo/src/app/app.routes.ts'); - const component = tree.readContent('/projects/foo/src/app/app.component.ts'); + const component = tree.readContent('/projects/foo/src/app/app.ts'); expect(component).toContain(`import { RouterOutlet } from '@angular/router';`); expect(component).toContain(`imports: [RouterOutlet]`); @@ -654,7 +654,7 @@ describe('Application Schematic', () => { const path = '/projects/foo/src/app/app.module.ts'; const content = tree.readContent(path); - expect(content).toMatch(/import { AppComponent } from '\.\/app\.component';/); + expect(content).toMatch(/import { App } from '\.\/app';/); }); it('should create all files of an application', async () => { @@ -671,10 +671,10 @@ describe('Application Schematic', () => { '/projects/foo/src/styles.css', '/projects/foo/src/app/app-routing.module.ts', '/projects/foo/src/app/app.module.ts', - '/projects/foo/src/app/app.component.css', - '/projects/foo/src/app/app.component.ng.html', - '/projects/foo/src/app/app.component.spec.ts', - '/projects/foo/src/app/app.component.ts', + '/projects/foo/src/app/app.css', + '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.spec.ts', + '/projects/foo/src/app/app.ts', ]), ); }); diff --git a/packages/schematics/angular/component/index.ts b/packages/schematics/angular/component/index.ts index c0937036d20f..a59b3d3763fa 100644 --- a/packages/schematics/angular/component/index.ts +++ b/packages/schematics/angular/component/index.ts @@ -55,6 +55,9 @@ export default function (options: ComponentOptions): Rule { options.module = findModuleFromOptions(host, options); + // Schematic templates require a defined type value + options.type ??= ''; + const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; diff --git a/packages/schematics/angular/component/schema.json b/packages/schematics/angular/component/schema.json index 549e285fc397..d292a46f35ff 100644 --- a/packages/schematics/angular/component/schema.json +++ b/packages/schematics/angular/component/schema.json @@ -93,8 +93,7 @@ }, "type": { "type": "string", - "description": "Append a custom type to the component's filename. For example, if you set the type to `container`, the file will be named `my-component.container.ts`.", - "default": "Component" + "description": "Append a custom type to the component's filename. For example, if you set the type to `container`, the file will be named `my-component.container.ts`." }, "skipTests": { "type": "boolean", diff --git a/packages/schematics/angular/library/files/src/__entryFile__.ts.template b/packages/schematics/angular/library/files/src/__entryFile__.ts.template index d88dc4f34551..9a737ecf69f8 100644 --- a/packages/schematics/angular/library/files/src/__entryFile__.ts.template +++ b/packages/schematics/angular/library/files/src/__entryFile__.ts.template @@ -3,5 +3,5 @@ */ export * from './lib/<%= dasherize(name) %>.service'; -export * from './lib/<%= dasherize(name) %>.component';<% if (!standalone) { %> +export * from './lib/<%= dasherize(name) %>';<% if (!standalone) { %> export * from './lib/<%= dasherize(name) %>.module';<% } %> diff --git a/packages/schematics/angular/library/index_spec.ts b/packages/schematics/angular/library/index_spec.ts index 49fd7a12e4ac..aebc908d3d90 100644 --- a/packages/schematics/angular/library/index_spec.ts +++ b/packages/schematics/angular/library/index_spec.ts @@ -55,8 +55,8 @@ describe('Library Schematic', () => { '/projects/foo/tsconfig.lib.json', '/projects/foo/tsconfig.lib.prod.json', '/projects/foo/src/my-index.ts', - '/projects/foo/src/lib/foo.component.spec.ts', - '/projects/foo/src/lib/foo.component.ts', + '/projects/foo/src/lib/foo.spec.ts', + '/projects/foo/src/lib/foo.ts', '/projects/foo/src/lib/foo.service.spec.ts', '/projects/foo/src/lib/foo.service.ts', ]), @@ -70,7 +70,7 @@ describe('Library Schematic', () => { it('should create a standalone component', async () => { const tree = await schematicRunner.runSchematic('library', defaultOptions, workspaceTree); - const componentContent = tree.readContent('/projects/foo/src/lib/foo.component.ts'); + const componentContent = tree.readContent('/projects/foo/src/lib/foo.ts'); expect(componentContent).not.toContain('standalone'); }); @@ -100,8 +100,8 @@ describe('Library Schematic', () => { '/some/other/directory/bar/tsconfig.lib.json', '/some/other/directory/bar/tsconfig.lib.prod.json', '/some/other/directory/bar/src/my-index.ts', - '/some/other/directory/bar/src/lib/foo.component.spec.ts', - '/some/other/directory/bar/src/lib/foo.component.ts', + '/some/other/directory/bar/src/lib/foo.spec.ts', + '/some/other/directory/bar/src/lib/foo.ts', '/some/other/directory/bar/src/lib/foo.service.spec.ts', '/some/other/directory/bar/src/lib/foo.service.ts', ]), @@ -310,7 +310,7 @@ describe('Library Schematic', () => { project: 'foo', }; tree = await schematicRunner.runSchematic('component', componentOptions, tree); - expect(tree.exists('/projects/foo/src/lib/comp/comp.component.ts')).toBe(true); + expect(tree.exists('/projects/foo/src/lib/comp/comp.ts')).toBe(true); }); it(`should support creating scoped libraries`, async () => { @@ -321,7 +321,7 @@ describe('Library Schematic', () => { const pkgJsonPath = '/projects/myscope/mylib/package.json'; expect(tree.files).toContain(pkgJsonPath); expect(tree.files).toContain('/projects/myscope/mylib/src/lib/mylib.service.ts'); - expect(tree.files).toContain('/projects/myscope/mylib/src/lib/mylib.component.ts'); + expect(tree.files).toContain('/projects/myscope/mylib/src/lib/mylib.ts'); const pkgJson = JSON.parse(tree.readContent(pkgJsonPath)); expect(pkgJson.name).toEqual(scopedName); @@ -409,7 +409,7 @@ describe('Library Schematic', () => { ); const fileContent = getFileContent(tree, '/projects/foo/src/lib/foo.module.ts'); - expect(fileContent).toMatch(/exports: \[\n(\s*) {2}FooComponent\n\1\]/); + expect(fileContent).toMatch(/exports: \[\n(\s*) {2}Foo\n\1\]/); }); it('should create files', async () => { @@ -429,8 +429,8 @@ describe('Library Schematic', () => { '/projects/foo/tsconfig.lib.prod.json', '/projects/foo/src/my-index.ts', '/projects/foo/src/lib/foo.module.ts', - '/projects/foo/src/lib/foo.component.spec.ts', - '/projects/foo/src/lib/foo.component.ts', + '/projects/foo/src/lib/foo.spec.ts', + '/projects/foo/src/lib/foo.ts', '/projects/foo/src/lib/foo.service.spec.ts', '/projects/foo/src/lib/foo.service.ts', ]), diff --git a/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__-routing.module.ts.template b/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__-routing.module.ts.template index 63c372de607c..5d7368582ad2 100644 --- a/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__-routing.module.ts.template +++ b/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__-routing.module.ts.template @@ -1,8 +1,8 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router';<% if (lazyRoute) { %> -import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';<% } %> +import { <%= classify(name) %> } from './<%= dasherize(name) %>';<% } %> -const routes: Routes = [<% if (lazyRoute) { %>{ path: '', component: <%= classify(name) %>Component }<% } %>]; +const routes: Routes = [<% if (lazyRoute) { %>{ path: '', component: <%= classify(name) %> }<% } %>]; @NgModule({ imports: [RouterModule.for<%= routingScope %>(routes)], diff --git a/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template b/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template index 252b9bb03397..a8ab83f0139e 100644 --- a/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template +++ b/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template @@ -5,7 +5,7 @@ import { Routes, RouterModule } from '@angular/router';<% } %> import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> <% if (lazyRouteWithoutRouteModule) { %> const routes: Routes = [ - { path: '', component: <%= classify(name) %>Component } + { path: '', component: <%= classify(name) %> } ];<% } %> @NgModule({ diff --git a/packages/schematics/angular/module/index_spec.ts b/packages/schematics/angular/module/index_spec.ts index ef04ddb5c81b..6bb319654c78 100644 --- a/packages/schematics/angular/module/index_spec.ts +++ b/packages/schematics/angular/module/index_spec.ts @@ -152,9 +152,9 @@ describe('Module Schematic', () => { jasmine.arrayContaining([ '/projects/bar/src/app/foo/foo.module.ts', '/projects/bar/src/app/foo/foo-routing.module.ts', - '/projects/bar/src/app/foo/foo.component.ts', - '/projects/bar/src/app/foo/foo.component.ng.html', - '/projects/bar/src/app/foo/foo.component.css', + '/projects/bar/src/app/foo/foo.ts', + '/projects/bar/src/app/foo/foo.ng.html', + '/projects/bar/src/app/foo/foo.css', ]), ); @@ -170,7 +170,7 @@ describe('Module Schematic', () => { ); expect(fooRoutingModuleContent).toMatch(/RouterModule.forChild\(routes\)/); expect(fooRoutingModuleContent).toMatch( - /const routes: Routes = \[\r?\n?\s*{ path: '', component: FooComponent }\r?\n?\s*\];/, + /const routes: Routes = \[\r?\n?\s*{ path: '', component: Foo }\r?\n?\s*\];/, ); }); @@ -179,7 +179,7 @@ describe('Module Schematic', () => { '/projects/bar/src/app/app.module.ts', ` import { NgModule } from '@angular/core'; - import { AppComponent } from './app.component'; + import { AppComponent } from './app'; @NgModule({ declarations: [ @@ -202,9 +202,9 @@ describe('Module Schematic', () => { expect(files).toContain('/projects/bar/src/app/foo/foo.module.ts'); expect(files).not.toContain('/projects/bar/src/app/foo/foo-routing.module.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo.component.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo.component.ng.html'); - expect(files).toContain('/projects/bar/src/app/foo/foo.component.css'); + expect(files).toContain('/projects/bar/src/app/foo/foo.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo.ng.html'); + expect(files).toContain('/projects/bar/src/app/foo/foo.css'); const appModuleContent = tree.readContent('/projects/bar/src/app/app.module.ts'); expect(appModuleContent).toMatch( @@ -214,7 +214,7 @@ describe('Module Schematic', () => { const fooModuleContent = tree.readContent('/projects/bar/src/app/foo/foo.module.ts'); expect(fooModuleContent).toMatch(/RouterModule.forChild\(routes\)/); expect(fooModuleContent).toMatch( - /const routes: Routes = \[\r?\n?\s*{ path: '', component: FooComponent }\r?\n?\s*\];/, + /const routes: Routes = \[\r?\n?\s*{ path: '', component: Foo }\r?\n?\s*\];/, ); }); @@ -230,9 +230,9 @@ describe('Module Schematic', () => { jasmine.arrayContaining([ '/projects/bar/src/app/foo.module.ts', '/projects/bar/src/app/foo-routing.module.ts', - '/projects/bar/src/app/foo.component.ts', - '/projects/bar/src/app/foo.component.ng.html', - '/projects/bar/src/app/foo.component.css', + '/projects/bar/src/app/foo.ts', + '/projects/bar/src/app/foo.ng.html', + '/projects/bar/src/app/foo.css', ]), ); @@ -271,14 +271,14 @@ describe('Module Schematic', () => { '/projects/bar/src/app/foo/foo.module.ts', '/projects/bar/src/app/bar/bar-routing.module.ts', '/projects/bar/src/app/bar/bar.module.ts', - '/projects/bar/src/app/bar/bar.component.ts', + '/projects/bar/src/app/bar/bar.ts', ]), ); const barRoutingModuleContent = tree.readContent( '/projects/bar/src/app/bar/bar-routing.module.ts', ); - expect(barRoutingModuleContent).toContain(`path: '', component: BarComponent `); + expect(barRoutingModuleContent).toContain(`path: '', component: Bar `); const fooRoutingModuleContent = tree.readContent( '/projects/bar/src/app/foo/foo-routing.module.ts', diff --git a/packages/schematics/angular/ng-new/index_spec.ts b/packages/schematics/angular/ng-new/index_spec.ts index a86d44cd6f79..3f2464e0af8b 100644 --- a/packages/schematics/angular/ng-new/index_spec.ts +++ b/packages/schematics/angular/ng-new/index_spec.ts @@ -58,7 +58,7 @@ describe('Ng New Schematic', () => { ); }); - it('should should set the prefix in angular.json and in app.component.ts', async () => { + it('should should set the prefix in angular.json and in app.ts', async () => { const options = { ...defaultOptions, prefix: 'pre' }; const tree = await schematicRunner.runSchematic('ng-new', options); @@ -75,7 +75,7 @@ describe('Ng New Schematic', () => { const tree = await schematicRunner.runSchematic('ng-new', options); const moduleContent = tree.readContent('/foo/src/app/app.module.ts'); - expect(moduleContent).toMatch(/declarations:\s*\[\s*AppComponent\s*\]/m); + expect(moduleContent).toMatch(/declarations:\s*\[\s*App\s*\]/m); }); it('createApplication=false should create an empty workspace', async () => { diff --git a/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template b/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template index d1ff23ae44c8..4fde3bf38675 100644 --- a/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template @@ -1,13 +1,13 @@ import { NgModule } from '@angular/core'; import { ServerModule } from '@angular/platform-server'; import { provideServerRouting } from '@angular/ssr'; -import { AppComponent } from './app.component'; +import { App } from './app'; import { AppModule } from './app.module'; import { serverRoutes } from './app.routes.server'; @NgModule({ imports: [AppModule, ServerModule], providers: [provideServerRouting(serverRoutes)], - bootstrap: [AppComponent], + bootstrap: [App], }) export class AppServerModule {} diff --git a/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template b/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template index 4b9d4d1545c1..154ce1c8fd43 100644 --- a/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template @@ -1,7 +1,7 @@ import { bootstrapApplication } from '@angular/platform-browser'; -import { AppComponent } from './app/app.component'; +import { App } from './app/app'; import { config } from './app/app.config.server'; -const bootstrap = () => bootstrapApplication(AppComponent, config); +const bootstrap = () => bootstrapApplication(App, config); export default bootstrap; diff --git a/packages/schematics/angular/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template b/packages/schematics/angular/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template index 795380cd2294..38689aa6c3ff 100644 --- a/packages/schematics/angular/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template +++ b/packages/schematics/angular/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template @@ -2,13 +2,13 @@ import { NgModule } from '@angular/core'; import { ServerModule } from '@angular/platform-server'; import { AppModule } from './app.module'; -import { AppComponent } from './app.component'; +import { App } from './app'; @NgModule({ imports: [ AppModule, ServerModule, ], - bootstrap: [AppComponent], + bootstrap: [App], }) export class AppServerModule {} diff --git a/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template b/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template index 4b9d4d1545c1..154ce1c8fd43 100644 --- a/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template +++ b/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template @@ -1,7 +1,7 @@ import { bootstrapApplication } from '@angular/platform-browser'; -import { AppComponent } from './app/app.component'; +import { App } from './app/app'; import { config } from './app/app.config.server'; -const bootstrap = () => bootstrapApplication(AppComponent, config); +const bootstrap = () => bootstrapApplication(App, config); export default bootstrap; diff --git a/packages/schematics/angular/server/index_spec.ts b/packages/schematics/angular/server/index_spec.ts index 130d4bf05cd3..316fdfa17557 100644 --- a/packages/schematics/angular/server/index_spec.ts +++ b/packages/schematics/angular/server/index_spec.ts @@ -124,7 +124,7 @@ describe('Server Schematic', () => { const filePath = '/projects/bar/src/main.server.ts'; expect(tree.exists(filePath)).toBeTrue(); const contents = tree.readContent(filePath); - expect(contents).toContain(`bootstrapApplication(AppComponent, config)`); + expect(contents).toContain(`bootstrapApplication(App, config)`); }); it('should create server app config file', async () => { diff --git a/packages/schematics/angular/web-worker/index.ts b/packages/schematics/angular/web-worker/index.ts index a3a08fb85ffe..f04ef232f955 100644 --- a/packages/schematics/angular/web-worker/index.ts +++ b/packages/schematics/angular/web-worker/index.ts @@ -39,7 +39,7 @@ function addSnippet(options: WebWorkerOptions): Rule { .getDir(options.path) .subfiles // Find all files that start with the same name, are ts files, // and aren't spec or module files. - .filter((f) => fileRegExp.test(f) && !/(module|spec)\.ts$/.test(f)) + .filter((f) => fileRegExp.test(f) && !/(module|spec|config|routes)\.ts$/.test(f)) // Sort alphabetically for consistency. .sort(); diff --git a/packages/schematics/angular/web-worker/index_spec.ts b/packages/schematics/angular/web-worker/index_spec.ts index 0ce238177838..c1ab48b8d196 100644 --- a/packages/schematics/angular/web-worker/index_spec.ts +++ b/packages/schematics/angular/web-worker/index_spec.ts @@ -70,7 +70,7 @@ describe('Web Worker Schematic', () => { it('should add snippet to sibling file', async () => { const tree = await schematicRunner.runSchematic('web-worker', defaultOptions, appTree); - const appComponent = tree.readContent('/projects/bar/src/app/app.component.ts'); + const appComponent = tree.readContent('/projects/bar/src/app/app.ts'); expect(appComponent).toContain(`new Worker(new URL('./${defaultOptions.name}.worker`); expect(appComponent).toContain('console.log(`page got message: ${data}`)'); }); diff --git a/tests/legacy-cli/e2e/tests/basic/aot.ts b/tests/legacy-cli/e2e/tests/basic/aot.ts index becaecc9eae2..d462d817332a 100644 --- a/tests/legacy-cli/e2e/tests/basic/aot.ts +++ b/tests/legacy-cli/e2e/tests/basic/aot.ts @@ -8,5 +8,5 @@ import { ng } from '../../utils/process'; export default async function () { await ng('build', '--aot=true', '--configuration=development'); const content = await readFile('dist/test-project/browser/main.js', 'utf-8'); - assert.match(content, /AppComponent_Factory/); + assert.match(content, /App_Factory/); } diff --git a/tests/legacy-cli/e2e/tests/basic/rebuild.ts b/tests/legacy-cli/e2e/tests/basic/rebuild.ts index fd5d2b789500..677f6b06f38e 100644 --- a/tests/legacy-cli/e2e/tests/basic/rebuild.ts +++ b/tests/legacy-cli/e2e/tests/basic/rebuild.ts @@ -7,7 +7,7 @@ import { ngServe } from '../../utils/project'; export default async function () { const esbuild = getGlobalVariable('argv')['esbuild']; const validBundleRegEx = esbuild ? /sent to client/ : /Compiled successfully\./; - const lazyBundleRegEx = esbuild ? /chunk-/ : /src_app_lazy_lazy_component_ts\.js/; + const lazyBundleRegEx = esbuild ? /chunk-/ : /src_app_lazy_lazy_ts\.js/; // Disable HMR to support page reload based rebuild testing. const port = await ngServe('--no-hmr'); @@ -25,7 +25,7 @@ export default async function () { replaceInFile( 'src/app/app.routes.ts', 'routes: Routes = [];', - `routes: Routes = [{path: 'lazy', loadComponent: () => import('./lazy/lazy.component').then(c => c.LazyComponent)}];`, + `routes: Routes = [{path: 'lazy', loadComponent: () => import('./lazy/lazy').then(c => c.Lazy)}];`, ), ]); @@ -83,7 +83,7 @@ export default async function () { await Promise.all([ waitForAnyProcessOutputToMatch(validBundleRegEx), writeMultipleFiles({ - 'src/app/app.component.ng.html': '

testingTESTING123

', + 'src/app/app.ng.html': '

testingTESTING123

', }), ]); @@ -99,7 +99,7 @@ export default async function () { await Promise.all([ waitForAnyProcessOutputToMatch(validBundleRegEx), writeMultipleFiles({ - 'src/app/app.component.css': ':host { color: blue; }', + 'src/app/app.css': ':host { color: blue; }', }), ]); diff --git a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts index 08fd86aeb0e6..9315304837d7 100644 --- a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts +++ b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts @@ -7,7 +7,7 @@ import { updateJsonFile } from '../../../utils/project'; const snapshots = require('../../../ng-snapshot/package.json'); export default async function () { - await appendToFile('src/app/app.component.ng.html', ''); + await appendToFile('src/app/app.ng.html', ''); await ng('generate', 'app-shell', '--project', 'test-project'); const isSnapshotBuild = getGlobalVariable('argv')['ng-snapshots']; diff --git a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts index d0649a7711ed..15bea76575dd 100644 --- a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts +++ b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts @@ -7,7 +7,7 @@ import { updateJsonFile } from '../../../utils/project'; const snapshots = require('../../../ng-snapshot/package.json'); export default async function () { - await appendToFile('src/app/app.component.ng.html', ''); + await appendToFile('src/app/app.ng.html', ''); await ng('generate', 'service-worker', '--project', 'test-project'); await ng('generate', 'app-shell', '--project', 'test-project'); diff --git a/tests/legacy-cli/e2e/tests/build/css-urls.ts b/tests/legacy-cli/e2e/tests/build/css-urls.ts index 6ce16d5ada48..839ecf58f567 100644 --- a/tests/legacy-cli/e2e/tests/build/css-urls.ts +++ b/tests/legacy-cli/e2e/tests/build/css-urls.ts @@ -33,7 +33,7 @@ export default async function () { h1 { background: url('/assets/global-img-absolute.svg'); } h2 { background: url('./assets/global-img-relative.png'); } `, - 'src/app/app.component.css': ` + 'src/app/app.css': ` h3 { background: url('/assets/component-img-absolute.svg'); } h4 { background: url('../assets/component-img-relative.png'); } `, diff --git a/tests/legacy-cli/e2e/tests/build/lazy-load-syntax.ts b/tests/legacy-cli/e2e/tests/build/lazy-load-syntax.ts index bdb7b53f61b1..2b91b3f63b45 100644 --- a/tests/legacy-cli/e2e/tests/build/lazy-load-syntax.ts +++ b/tests/legacy-cli/e2e/tests/build/lazy-load-syntax.ts @@ -18,7 +18,7 @@ export default async function () { 'routes: Routes = [];', `routes: Routes = [{ path: 'lazy', - loadComponent: () => import('./lazy-comp/lazy-comp.component').then(c => c.LazyCompComponent), + loadComponent: () => import('./lazy-comp/lazy-comp').then(c => c.LazyComp), }];`, ); diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-full-jit.ts b/tests/legacy-cli/e2e/tests/build/library/lib-consumption-full-jit.ts index eaba4a907e4f..edded2bebc88 100644 --- a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-full-jit.ts +++ b/tests/legacy-cli/e2e/tests/build/library/lib-consumption-full-jit.ts @@ -29,6 +29,6 @@ export default async function () { await ng('build', '--configuration=development'); await expectFileToMatch( 'dist/test-project/browser/main.js.map', - 'projects/my-lib/src/lib/my-lib.component.ts', + 'projects/my-lib/src/lib/my-lib.ts', ); } diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-sourcemaps.ts b/tests/legacy-cli/e2e/tests/build/library/lib-consumption-sourcemaps.ts index 7578700bb0df..c0b7a5e78a73 100644 --- a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-sourcemaps.ts +++ b/tests/legacy-cli/e2e/tests/build/library/lib-consumption-sourcemaps.ts @@ -12,6 +12,6 @@ export default async function () { await ng('build', '--configuration=development'); await expectFileToMatch( 'dist/test-project/browser/main.js.map', - 'projects/my-lib/src/lib/my-lib.component.ts', + 'projects/my-lib/src/lib/my-lib.ts', ); } diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts b/tests/legacy-cli/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts index c3816870b334..33b221a32efe 100644 --- a/tests/legacy-cli/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts +++ b/tests/legacy-cli/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts @@ -11,7 +11,7 @@ export default async function () { // Add an unused class as part of the public api. await appendToFile( - 'projects/my-lib/src/lib/my-lib.component.ts', + 'projects/my-lib/src/lib/my-lib.ts', ` function something() { return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { diff --git a/tests/legacy-cli/e2e/tests/build/library/setup.ts b/tests/legacy-cli/e2e/tests/build/library/setup.ts index 42b7b3360ac3..d47fcae5a754 100644 --- a/tests/legacy-cli/e2e/tests/build/library/setup.ts +++ b/tests/legacy-cli/e2e/tests/build/library/setup.ts @@ -6,16 +6,16 @@ export async function libraryConsumptionSetup(): Promise { // Force an external template await writeMultipleFiles({ - 'projects/my-lib/src/lib/my-lib.component.ng.html': `

my-lib works!

`, - 'projects/my-lib/src/lib/my-lib.component.ts': `import { Component } from '@angular/core'; + 'projects/my-lib/src/lib/my-lib.ng.html': `

my-lib works!

`, + 'projects/my-lib/src/lib/my-lib.ts': `import { Component } from '@angular/core'; @Component({ standalone: true, selector: 'lib-my-lib', - templateUrl: './my-lib.component.ng.html', + templateUrl: './my-lib.ng.html', }) export class MyLibComponent {}`, - './src/app/app.component.ts': ` + './src/app/app.ts': ` import { Component } from '@angular/core'; import { MyLibService, MyLibComponent } from 'my-lib'; @@ -25,7 +25,7 @@ export async function libraryConsumptionSetup(): Promise { template: '', imports: [MyLibComponent], }) - export class AppComponent { + export class App { title = 'test-project'; constructor(myLibService: MyLibService) { diff --git a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts index 5df9bb73c72a..46da2ed55d62 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts @@ -50,25 +50,25 @@ export default async function () { ` import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; - import { OneComponent } from './one/one.component'; - import { TwoChildOneComponent } from './two-child-one/two-child-one.component'; - import { TwoChildTwoComponent } from './two-child-two/two-child-two.component'; + import { One} from './one/one'; + import { TwoChildOne } from './two-child-one/two-child-one'; + import { TwoChildTwo } from './two-child-two/two-child-two'; const routes: Routes = [ { path: '', - component: OneComponent, + component: One, }, { path: 'two', children: [ { path: 'two-child-one', - component: TwoChildOneComponent, + component: TwoChildOne, }, { path: 'two-child-two', - component: TwoChildTwoComponent, + component: TwoChildTwo, }, ], }, diff --git a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts index 7deda0fd2584..71a3ba2fb15d 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts @@ -20,25 +20,25 @@ export default async function () { 'src/app/app.routes.ts', ` import { Routes } from '@angular/router'; - import { OneComponent } from './one/one.component'; - import { TwoChildOneComponent } from './two-child-one/two-child-one.component'; - import { TwoChildTwoComponent } from './two-child-two/two-child-two.component'; + import { One } from './one/one'; + import { TwoChildOne } from './two-child-one/two-child-one'; + import { TwoChildTwo } from './two-child-two/two-child-two'; export const routes: Routes = [ { path: '', - component: OneComponent, + component: One, }, { path: 'two', children: [ { path: 'two-child-one', - component: TwoChildOneComponent, + component: TwoChildOne, }, { path: 'two-child-two', - component: TwoChildTwoComponent, + component: TwoChildTwo, }, ], }, @@ -47,17 +47,17 @@ export default async function () { children: [ { path: '', - loadComponent: () => import('./lazy-one/lazy-one.component').then(c => c.LazyOneComponent), + loadComponent: () => import('./lazy-one/lazy-one').then(c => c.LazyOne), }, { path: 'lazy-one-child', - loadComponent: () => import('./lazy-one-child/lazy-one-child.component').then(c => c.LazyOneChildComponent), + loadComponent: () => import('./lazy-one-child/lazy-one-child').then(c => c.LazyOneChild), }, ], }, { path: 'lazy-two', - loadComponent: () => import('./lazy-two/lazy-two.component').then(c => c.LazyTwoComponent), + loadComponent: () => import('./lazy-two/lazy-two').then(c => c.LazyTwo), }, ]; `, diff --git a/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts b/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts index f872e25c77a2..c971f87c27d6 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts @@ -19,7 +19,7 @@ export default async function () { await installWorkspacePackages(); await writeMultipleFiles({ - 'src/app/app.component.ts': ` + 'src/app/app.ts': ` import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; @@ -28,10 +28,10 @@ export default async function () { selector: 'app-root', standalone: true, imports: [CommonModule, RouterOutlet], - templateUrl: './app.component.ng.html', - styleUrls: ['./app.component.css'] + templateUrl: './app.ng.html', + styleUrls: ['./app.css'] }) - export class AppComponent { + export class App { title = 'test-ssr'; constructor() { @@ -48,6 +48,6 @@ export default async function () { message, // When babel is used it will add names to the sourcemap and `constructor` will be used in the stack trace. // This will currently only happen if AOT and script optimizations are set which enables advanced optimizations. - /window is not defined[.\s\S]*(?:constructor|_AppComponent) \(.*app\.component\.ts\:\d+:\d+\)/, + /window is not defined[.\s\S]*(?:constructor|_App) \(.*app\.ts\:\d+:\d+\)/, ); } diff --git a/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts b/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts index 64f9ca1d52b7..b68e0a72b92a 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts @@ -23,7 +23,7 @@ export default async function () { import { ApplicationConfig } from '@angular/core'; import { provideRouter } from '@angular/router'; - import {HomeComponent} from './home/home.component'; + import {Home} from './home/home'; import { provideClientHydration } from '@angular/platform-browser'; import { provideHttpClient, withFetch } from '@angular/common/http'; @@ -31,7 +31,7 @@ export default async function () { providers: [ provideRouter([{ path: '', - component: HomeComponent, + component: Home, }]), provideClientHydration(), provideHttpClient(withFetch()), @@ -44,7 +44,7 @@ export default async function () { 'public/media with-space.json': JSON.stringify({ dataFromAssetsWithSpace: true }), // Update component to do an HTTP call to asset. - 'src/app/app.component.ts': ` + 'src/app/app.ts': ` import { Component, inject } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; @@ -60,7 +60,7 @@ export default async function () { \`, }) - export class AppComponent { + export class App { data: any; dataWithSpace: any; diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts index 92d83e029576..383674369be1 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts @@ -31,14 +31,14 @@ export default async function () { } await writeMultipleFiles({ - 'src/app/app.component.css': `div { color: #000 }`, + 'src/app/app.css': `div { color: #000 }`, 'src/styles.css': `* { color: #000 }`, 'src/main.ts': `import { bootstrapApplication } from '@angular/platform-browser'; - import { AppComponent } from './app/app.component'; + import { App } from './app/app'; import { appConfig } from './app/app.config'; (window as any)['doBootstrap'] = () => { - bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err)); + bootstrapApplication(App, appConfig).catch((err) => console.error(err)); }; `, 'src/index.html': ` diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts index dda29bdced62..8654c01bf79a 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts @@ -66,7 +66,7 @@ export default async function () { } await writeMultipleFiles({ - 'projects/test-project-two/src/app/app.component.css': `div { color: #000 }`, + 'projects/test-project-two/src/app/app.css': `div { color: #000 }`, 'projects/test-project-two/src/styles.css': `* { color: #000 }`, 'projects/test-project-two/src/main.ts': ` import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts index 10d8e3018b60..531b29a4b0ec 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts @@ -32,14 +32,14 @@ export default async function () { await installWorkspacePackages(); await writeMultipleFiles({ - 'src/app/app.component.css': `div { color: #000 }`, + 'src/app/app.css': `div { color: #000 }`, 'src/styles.css': `* { color: #000 }`, 'src/main.ts': `import { bootstrapApplication } from '@angular/platform-browser'; - import { AppComponent } from './app/app.component'; + import { App } from './app/app'; import { appConfig } from './app/app.config'; (window as any)['doBootstrap'] = () => { - bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err)); + bootstrapApplication(App, appConfig).catch((err) => console.error(err)); }; `, 'e2e/src/app.e2e-spec.ts': ` diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts index a35843bcc7ef..6d0a45459a16 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts @@ -28,22 +28,22 @@ export default async function () { 'src/app/app.routes.ts', ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; - import { SsrComponent } from './ssr/ssr.component'; - import { SsgComponent } from './ssg/ssg.component'; + import { Home } from './home/home'; + import { Ssr } from './ssr/ssr'; + import { Ssg } from './ssg/ssg'; export const routes: Routes = [ { path: '', - component: HomeComponent, + component: Home, }, { path: 'ssg', - component: SsgComponent, + component: Ssg, }, { path: 'ssr', - component: SsrComponent, + component: Ssr, }, ]; `, diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts index 11d32dd1b7fe..79fc755c4477 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts @@ -53,22 +53,22 @@ export default async function () { 'src/app/app.routes.ts', ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; - import { SsrComponent } from './ssr/ssr.component'; - import { SsgComponent } from './ssg/ssg.component'; + import { Home } from './home/home'; + import { Ssr } from './ssr/ssr'; + import { Ssg } from './ssg/ssg'; export const routes: Routes = [ { path: '', - component: HomeComponent, + component: Home, }, { path: 'ssg', - component: SsgComponent, + component: Ssg, }, { path: 'ssr', - component: SsrComponent, + component: Ssr, }, ]; `, diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts index c7f68267fc4f..994d77343d1e 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts @@ -28,22 +28,22 @@ export default async function () { 'src/app/app.routes.ts', ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; - import { SsrComponent } from './ssr/ssr.component'; - import { SsgComponent } from './ssg/ssg.component'; + import { Home } from './home/home'; + import { Ssr } from './ssr/ssr'; + import { Ssg } from './ssg/ssg'; export const routes: Routes = [ { path: '', - component: HomeComponent, + component: Home, }, { path: 'ssg', - component: SsgComponent, + component: Ssg, }, { path: 'ssr', - component: SsrComponent, + component: Ssr, }, ]; `, diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts index b8f30483c303..991ade378dc7 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts @@ -27,26 +27,26 @@ export default async function () { await installPackage('h3@1'); await writeMultipleFiles({ - // Replace the template of app.component.ng.html as it makes it harder to debug - 'src/app/app.component.ng.html': '', + // Replace the template of app.ng.html as it makes it harder to debug + 'src/app/app.ng.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; - import { SsrComponent } from './ssr/ssr.component'; - import { SsgWithParamsComponent } from './ssg-with-params/ssg-with-params.component'; + import { Home } from './home/home'; + import { Ssr } from './ssr/ssr'; + import { SsgWithParams } from './ssg-with-params/ssg-with-params'; export const routes: Routes = [ { path: '', - component: HomeComponent, + component: Home, }, { path: 'ssr', - component: SsrComponent, + component: Ssr, }, { path: 'ssg/:id', - component: SsgWithParamsComponent, + component: SsgWithParams, }, ]; `, diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts index 9e79e83ecba2..77b9f9adab61 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts @@ -21,38 +21,38 @@ export default async function () { await installWorkspacePackages(); // Test scenario to verify that the content length, including \r\n, is accurate - await replaceInFile('src/app/app.component.ts', "title = '", "title = 'Title\\r\\n"); + await replaceInFile('src/app/app.ts', "title = '", "title = 'Title\\r\\n"); // Ensure text has been updated. - assert.match(await readFile('src/app/app.component.ts'), /title = 'Title/); + assert.match(await readFile('src/app/app.ts'), /title = 'Title/); // Add routes await writeFile( 'src/app/app.routes.ts', ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; - import { CsrComponent } from './csr/csr.component'; - import { SsrComponent } from './ssr/ssr.component'; - import { SsgComponent } from './ssg/ssg.component'; - import { SsgWithParamsComponent } from './ssg-with-params/ssg-with-params.component'; + import { Home } from './home/home'; + import { Csr } from './csr/csr'; + import { Ssr } from './ssr/ssr'; + import { Ssg } from './ssg/ssg'; + import { SsgWithParams } from './ssg-with-params/ssg-with-params'; export const routes: Routes = [ { path: '', - component: HomeComponent, + component: Home, }, { path: 'ssg', - component: SsgComponent, + component: Ssg, }, { path: 'ssr', - component: SsrComponent, + component: Ssr, }, { path: 'csr', - component: CsrComponent, + component: Csr, }, { path: 'redirect', @@ -60,7 +60,7 @@ export default async function () { }, { path: 'ssg/:id', - component: SsgWithParamsComponent, + component: SsgWithParams, }, ]; `, diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts index d06c3f707463..8b4ff005cbe5 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts @@ -21,7 +21,7 @@ export default async function () { // Add asset 'public/media.json': JSON.stringify({ dataFromAssets: true }), // Update component to do an HTTP call to asset and API. - 'src/app/app.component.ts': ` + 'src/app/app.ts': ` import { Component, inject } from '@angular/core'; import { JsonPipe } from '@angular/common'; import { RouterOutlet } from '@angular/router'; @@ -37,7 +37,7 @@ export default async function () { \`, }) - export class AppComponent { + export class App { assetsData: any; apiData: any; @@ -59,7 +59,7 @@ export default async function () { import { ApplicationConfig } from '@angular/core'; import { provideRouter } from '@angular/router'; - import { HomeComponent } from './home/home.component'; + import { Home } from './home/home'; import { provideClientHydration } from '@angular/platform-browser'; import { provideHttpClient, withFetch } from '@angular/common/http'; @@ -67,7 +67,7 @@ export default async function () { providers: [ provideRouter([{ path: 'home', - component: HomeComponent, + component: Home, }]), provideClientHydration(), provideHttpClient(withFetch()), diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts index 10898aae5338..51f5e3990bae 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts @@ -28,21 +28,21 @@ export default async function () { 'src/app/app.routes.ts', ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; - import { SsgComponent } from './ssg/ssg.component'; + import { Home } from './home/home'; + import { Ssg } from './ssg/ssg'; export const routes: Routes = [ { path: '', - component: HomeComponent, + component: Home, }, { path: 'ssg', - component: SsgComponent, + component: Ssg, }, { path: '**', - component: HomeComponent, + component: Home, }, ]; `, diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts index 434530aedce2..617776a94dc7 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts @@ -30,18 +30,18 @@ export default async function () { 'src/app/app.routes.ts', ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; - import { SsgComponent } from './ssg/ssg.component'; - import { SsgWithParamsComponent } from './ssg-with-params/ssg-with-params.component'; + import { Home } from './home/home'; + import { Ssg } from './ssg/ssg'; + import { SsgWithParams } from './ssg-with-params/ssg-with-params'; export const routes: Routes = [ { path: '', - component: HomeComponent, + component: Home, }, { path: 'ssg', - component: SsgComponent, + component: Ssg, }, { path: 'ssg-redirect', @@ -49,11 +49,11 @@ export default async function () { }, { path: 'ssg/:id', - component: SsgWithParamsComponent, + component: SsgWithParams, }, { path: '**', - component: HomeComponent, + component: Home, }, ]; `, diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts index e0cfd9357517..19697ace5657 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts @@ -31,7 +31,7 @@ export default async function () { export const routes: Routes = [ { path: '', - loadComponent: () => import('./home/home.component').then(c => c.HomeComponent), + loadComponent: () => import('./home/home').then(c => c.Home), }, { path: 'ssg', @@ -39,11 +39,11 @@ export default async function () { }, { path: 'ssr', - loadComponent: () => import('./ssr/ssr.component').then(c => c.SsrComponent), + loadComponent: () => import('./ssr/ssr').then(c => c.Ssr), }, { path: 'csr', - loadComponent: () => import('./csr/csr.component').then(c => c.CsrComponent), + loadComponent: () => import('./csr/csr').then(c => c.Csr), }, ]; `, @@ -72,21 +72,21 @@ export default async function () { export const routes: Routes = [ { path: '', - loadComponent: () => import('./ssg/ssg.component').then(c => c.SsgComponent), + loadComponent: () => import('./ssg-component/ssg-component').then(c => c.SsgComponent), }, { path: 'one', - loadComponent: () => import('./ssg-one/ssg-one.component').then(c => c.SsgOneComponent), + loadComponent: () => import('./ssg-one/ssg-one').then(c => c.SsgOne), }, { path: 'two', - loadComponent: () => import('./ssg-two/ssg-two.component').then(c => c.SsgTwoComponent), + loadComponent: () => import('./ssg-two/ssg-two').then(c => c.SsgTwo), }, ];`, }); // Generate components for the above routes - const componentNames: string[] = ['home', 'ssg', 'csr', 'ssr', 'ssg-one', 'ssg-two']; + const componentNames: string[] = ['home', 'ssg-component', 'csr', 'ssr', 'ssg-one', 'ssg-two']; for (const componentName of componentNames) { await silentNg('generate', 'component', componentName); @@ -95,18 +95,18 @@ export default async function () { // Add a cross-dependency await Promise.all([ replaceInFile( - 'src/app/ssg-one/ssg-one.component.ts', - `OneComponent {`, - `OneComponent { + 'src/app/ssg-one/ssg-one.ts', + `One {`, + `One { async ngOnInit() { await import('../cross-dep'); } `, ), replaceInFile( - 'src/app/ssg-two/ssg-two.component.ts', - `TwoComponent {`, - `TwoComponent { + 'src/app/ssg-two/ssg-two.ts', + `Two {`, + `Two { async ngOnInit() { await import('../cross-dep'); } @@ -129,58 +129,39 @@ const RESPONSE_EXPECTS: Record< } > = { '/': { - matches: [//], - notMatches: [/ssg\.component/, /ssr\.component/, /csr\.component/, /cross-dep-/], + matches: [//], + notMatches: [/ssg\-component/, /ssr/, /csr/, /cross-dep-/], }, '/ssg': { matches: [ //, - //, - ], - notMatches: [ - /home\.component/, - /ssr\.component/, - /csr\.component/, - /ssg-one\.component/, - /ssg-two\.component/, - /cross-dep-/, + //, ], + notMatches: [/home/, /ssr/, /csr/, /ssg-one/, /ssg-two/, /cross-dep-/], }, '/ssg/one': { matches: [ //, - //, + //, //, ], - notMatches: [ - /home\.component/, - /ssr\.component/, - /csr\.component/, - /ssg-two\.component/, - /ssg\.component/, - ], + notMatches: [/home/, /ssr/, /csr/, /ssg-two/, /ssg\-component/], }, '/ssg/two': { matches: [ //, - //, + //, //, ], - notMatches: [ - /home\.component/, - /ssr\.component/, - /csr\.component/, - /ssg-one\.component/, - /ssg\.component/, - ], + notMatches: [/home/, /ssr/, /csr/, /ssg-one/, /ssg\-component/], }, '/ssr': { - matches: [//], - notMatches: [/home\.component/, /ssg\.component/, /csr\.component/], + matches: [//], + notMatches: [/home/, /ssg\-component/, /csr/], }, '/csr': { - matches: [//], - notMatches: [/home\.component/, /ssg\.component/, /ssr\.component/, /cross-dep-/], + matches: [//], + notMatches: [/home/, /ssg\-component/, /ssr/, /cross-dep-/], }, }; diff --git a/tests/legacy-cli/e2e/tests/build/styles/include-paths.ts b/tests/legacy-cli/e2e/tests/build/styles/include-paths.ts index b1149f79c6eb..fb1a0326ed9f 100644 --- a/tests/legacy-cli/e2e/tests/build/styles/include-paths.ts +++ b/tests/legacy-cli/e2e/tests/build/styles/include-paths.ts @@ -10,7 +10,7 @@ export default async function () { @import 'variables'; h1 { color: $primary-color; } `, - 'src/app/app.component.scss': ` + 'src/app/app.scss': ` @import 'variables'; h2 { color: $primary-color; } `, @@ -19,16 +19,16 @@ export default async function () { @import 'variables'; h5 { color: @primary-color; } `, - 'src/app/app.component.less': ` + 'src/app/app.less': ` @import 'variables'; h6 { color: @primary-color; } `, }); await replaceInFile( - 'src/app/app.component.ts', - `styleUrl: './app.component.css\'`, - `styleUrls: ['./app.component.scss', './app.component.less']`, + 'src/app/app.ts', + `styleUrl: './app.css\'`, + `styleUrls: ['./app.scss', './app.less']`, ); await updateJsonFile('angular.json', (workspaceJson) => { diff --git a/tests/legacy-cli/e2e/tests/build/styles/less.ts b/tests/legacy-cli/e2e/tests/build/styles/less.ts index 15376e17febc..c5d58d2d3b08 100644 --- a/tests/legacy-cli/e2e/tests/build/styles/less.ts +++ b/tests/legacy-cli/e2e/tests/build/styles/less.ts @@ -17,7 +17,7 @@ export default function () { body { background-color: blue; } `, 'src/imported-styles.less': 'p { background-color: red; }', - 'src/app/app.component.less': ` + 'src/app/app.less': ` .outer { .inner { background: #fff; @@ -25,16 +25,14 @@ export default function () { } `, }) - .then(() => deleteFile('src/app/app.component.css')) + .then(() => deleteFile('src/app/app.css')) .then(() => updateJsonFile('angular.json', (workspaceJson) => { const appArchitect = workspaceJson.projects['test-project'].architect; appArchitect.build.options.styles = [{ input: 'src/styles.less' }]; }), ) - .then(() => - replaceInFile('src/app/app.component.ts', './app.component.css', './app.component.less'), - ) + .then(() => replaceInFile('src/app/app.ts', './app.css', './app.less')) .then(() => ng('build', '--source-map', '--configuration=development')) .then(() => expectFileToMatch( diff --git a/tests/legacy-cli/e2e/tests/build/styles/loaders.ts b/tests/legacy-cli/e2e/tests/build/styles/loaders.ts index 81e5c87913cd..cbb602ece07b 100644 --- a/tests/legacy-cli/e2e/tests/build/styles/loaders.ts +++ b/tests/legacy-cli/e2e/tests/build/styles/loaders.ts @@ -15,7 +15,7 @@ export default async function () { body { background-color: blue; } `, 'src/imported-styles.scss': 'p { background-color: red; }', - 'src/app/app.component.scss': ` + 'src/app/app.scss': ` .outer { .inner { background: #fff; @@ -24,12 +24,12 @@ export default async function () { `, }); - await deleteFile('src/app/app.component.css'); + await deleteFile('src/app/app.css'); await updateJsonFile('angular.json', (workspaceJson) => { const appArchitect = workspaceJson.projects['test-project'].architect; appArchitect.build.options.styles = [{ input: 'src/styles.scss' }]; }); - await replaceInFile('src/app/app.component.ts', './app.component.css', './app.component.scss'); + await replaceInFile('src/app/app.ts', './app.css', './app.scss'); await ng('build', '--configuration=development'); diff --git a/tests/legacy-cli/e2e/tests/build/styles/sass.ts b/tests/legacy-cli/e2e/tests/build/styles/sass.ts index f4da7dce9474..f4259118317d 100644 --- a/tests/legacy-cli/e2e/tests/build/styles/sass.ts +++ b/tests/legacy-cli/e2e/tests/build/styles/sass.ts @@ -19,7 +19,7 @@ export default async function () { p background-color: red `, - 'src/app/app.component.sass': ` + 'src/app/app.sass': ` .outer .inner background: #fff @@ -31,8 +31,8 @@ export default async function () { appArchitect.build.options.styles = [{ input: 'src/styles.sass' }]; }); - await deleteFile('src/app/app.component.css'); - await replaceInFile('src/app/app.component.ts', './app.component.css', './app.component.sass'); + await deleteFile('src/app/app.css'); + await replaceInFile('src/app/app.ts', './app.css', './app.sass'); await ng('build', '--source-map', '--configuration=development'); diff --git a/tests/legacy-cli/e2e/tests/build/styles/scss-partial-resolution.ts b/tests/legacy-cli/e2e/tests/build/styles/scss-partial-resolution.ts index 313ec5e03e58..1a555b26e23b 100644 --- a/tests/legacy-cli/e2e/tests/build/styles/scss-partial-resolution.ts +++ b/tests/legacy-cli/e2e/tests/build/styles/scss-partial-resolution.ts @@ -16,7 +16,7 @@ export default async function () { @include button.core-styles; `, - 'src/app/app.component.scss': ` + 'src/app/app.scss': ` @use '@material/button/button'; @include button.core-styles; @@ -28,8 +28,8 @@ export default async function () { appArchitect.build.options.styles = ['src/styles.scss']; }); - await deleteFile('src/app/app.component.css'); - await replaceInFile('src/app/app.component.ts', './app.component.css', './app.component.scss'); + await deleteFile('src/app/app.css'); + await replaceInFile('src/app/app.ts', './app.css', './app.scss'); await ng('build', '--configuration=development'); } diff --git a/tests/legacy-cli/e2e/tests/build/styles/scss.ts b/tests/legacy-cli/e2e/tests/build/styles/scss.ts index 667eee47c068..69fcc1c0f060 100644 --- a/tests/legacy-cli/e2e/tests/build/styles/scss.ts +++ b/tests/legacy-cli/e2e/tests/build/styles/scss.ts @@ -15,7 +15,7 @@ export default async function () { body { background-color: blue; } `, 'src/imported-styles.scss': 'p { background-color: red; }', - 'src/app/app.component.scss': ` + 'src/app/app.scss': ` .outer { .inner { background: #fff; @@ -29,8 +29,8 @@ export default async function () { appArchitect.build.options.styles = [{ input: 'src/styles.scss' }]; }); - await deleteFile('src/app/app.component.css'); - await replaceInFile('src/app/app.component.ts', './app.component.css', './app.component.scss'); + await deleteFile('src/app/app.css'); + await replaceInFile('src/app/app.ts', './app.css', './app.scss'); await ng('build', '--source-map', '--configuration=development'); diff --git a/tests/legacy-cli/e2e/tests/build/styles/tailwind-v2.ts b/tests/legacy-cli/e2e/tests/build/styles/tailwind-v2.ts index fbb1222b2a95..f081e040dcb5 100644 --- a/tests/legacy-cli/e2e/tests/build/styles/tailwind-v2.ts +++ b/tests/legacy-cli/e2e/tests/build/styles/tailwind-v2.ts @@ -12,7 +12,7 @@ export default async function () { await silentExec('npx', 'tailwindcss@2', 'init'); // Add Tailwind directives to a component style - await writeFile('src/app/app.component.css', '@tailwind base; @tailwind components;'); + await writeFile('src/app/app.css', '@tailwind base; @tailwind components;'); // Add Tailwind directives to a global style await writeFile('src/styles.css', '@tailwind base; @tailwind components;'); diff --git a/tests/legacy-cli/e2e/tests/build/styles/tailwind-v3.ts b/tests/legacy-cli/e2e/tests/build/styles/tailwind-v3.ts index efda7dbcef66..97700a4c4b3e 100644 --- a/tests/legacy-cli/e2e/tests/build/styles/tailwind-v3.ts +++ b/tests/legacy-cli/e2e/tests/build/styles/tailwind-v3.ts @@ -16,7 +16,7 @@ export default async function () { await silentExec('npx', 'tailwindcss@3', 'init'); // Add Tailwind directives to a component style - await writeFile('src/app/app.component.css', '@tailwind base; @tailwind components;'); + await writeFile('src/app/app.css', '@tailwind base; @tailwind components;'); // Add Tailwind directives to a global style await writeFile( diff --git a/tests/legacy-cli/e2e/tests/build/ts-paths.ts b/tests/legacy-cli/e2e/tests/build/ts-paths.ts index 61aa8324ce4b..76ee53e5d2b2 100644 --- a/tests/legacy-cli/e2e/tests/build/ts-paths.ts +++ b/tests/legacy-cli/e2e/tests/build/ts-paths.ts @@ -19,7 +19,7 @@ export default async function () { 'src/app/shared/index.ts': `export * from './meaning'`, }); - await replaceInFile('src/main.ts', './app/app.component', '@root/app/app.component'); + await replaceInFile('src/main.ts', './app/app', '@root/app/app'); await ng('build', '--configuration=development'); await updateTsConfig((json) => { @@ -27,7 +27,7 @@ export default async function () { }); await appendToFile( - 'src/app/app.component.ts', + 'src/app/app.ts', ` import { meaning } from 'app/shared/meaning'; import { meaning as meaning2 } from '@shared'; diff --git a/tests/legacy-cli/e2e/tests/build/wasm-esm.ts b/tests/legacy-cli/e2e/tests/build/wasm-esm.ts index 8ed5accd131d..134584d40716 100644 --- a/tests/legacy-cli/e2e/tests/build/wasm-esm.ts +++ b/tests/legacy-cli/e2e/tests/build/wasm-esm.ts @@ -49,16 +49,12 @@ export default async function () { // Use WASM file in project await prependToFile( - 'src/app/app.component.ts', + 'src/app/app.ts', ` import { multiply, subtract1 } from './multiply.wasm'; `, ); - await replaceInFile( - 'src/app/app.component.ts', - "'test-project'", - 'multiply(4, 5) + subtract1(88)', - ); + await replaceInFile('src/app/app.ts', "'test-project'", 'multiply(4, 5) + subtract1(88)'); // Remove Zone.js from polyfills and make zoneless await updateJsonFile('angular.json', (json) => { diff --git a/tests/legacy-cli/e2e/tests/build/worker.ts b/tests/legacy-cli/e2e/tests/build/worker.ts index 31a997b02441..7b6cdb390cb7 100644 --- a/tests/legacy-cli/e2e/tests/build/worker.ts +++ b/tests/legacy-cli/e2e/tests/build/worker.ts @@ -16,7 +16,7 @@ export default async function () { const useWebpackBuilder = !getGlobalVariable('argv')['esbuild']; const workerPath = 'src/app/app.worker.ts'; - const snippetPath = 'src/app/app.component.ts'; + const snippetPath = 'src/app/app.ts'; const projectTsConfig = 'tsconfig.json'; const workerTsConfig = 'tsconfig.worker.json'; @@ -52,7 +52,7 @@ export default async function () { // console.warn has to be used because chrome only captures warnings and errors by default // https://github.com/angular/protractor/issues/2207 - await replaceInFile('src/app/app.component.ts', 'console.log', 'console.warn'); + await replaceInFile('src/app/app.ts', 'console.log', 'console.warn'); await writeFile( 'e2e/app.e2e-spec.ts', diff --git a/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts b/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts index 59c8ec9c7042..78c5b4b94995 100644 --- a/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts +++ b/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts @@ -27,7 +27,7 @@ export default async function () { import { ApplicationConfig } from '@angular/core'; import { provideRouter } from '@angular/router'; - import { HomeComponent } from './home/home.component'; + import { Home } from './home/home'; import { provideClientHydration } from '@angular/platform-browser'; import { provideHttpClient, withFetch } from '@angular/common/http'; @@ -35,7 +35,7 @@ export default async function () { providers: [ provideRouter([{ path: '', - component: HomeComponent, + component: Home, }]), provideClientHydration(), provideHttpClient(withFetch()), @@ -45,7 +45,7 @@ export default async function () { // Add asset 'public/media.json': JSON.stringify({ dataFromAssets: true }), // Update component to do an HTTP call to asset. - 'src/app/app.component.ts': ` + 'src/app/app.ts': ` import { Component, inject } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; @@ -60,7 +60,7 @@ export default async function () { \`, }) - export class AppComponent { + export class App { data: any; constructor() { const http = inject(HttpClient); diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts b/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts index 57b63edbed29..ac86d5beb358 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts @@ -9,10 +9,10 @@ export default function () { return ( ng('generate', 'component', 'test-component') .then(() => expectFileToExist(componentDir)) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.ts'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.spec.ts'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.ng.html'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.css'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.ts'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.spec.ts'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.ng.html'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.css'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts b/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts index 844379aaddf3..3f8d74bf0c42 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts @@ -19,10 +19,10 @@ export default async function () { // Ensure component is created in the correct location relative to the workspace root const componentDirectory = join(childDirectory, 'test-component'); - await expectFileToExist(join(componentDirectory, 'test-component.component.ts')); - await expectFileToExist(join(componentDirectory, 'test-component.component.spec.ts')); - await expectFileToExist(join(componentDirectory, 'test-component.component.ng.html')); - await expectFileToExist(join(componentDirectory, 'test-component.component.css')); + await expectFileToExist(join(componentDirectory, 'test-component.ts')); + await expectFileToExist(join(componentDirectory, 'test-component.spec.ts')); + await expectFileToExist(join(componentDirectory, 'test-component.ng.html')); + await expectFileToExist(join(componentDirectory, 'test-component.css')); // Ensure unit test execute and pass await ng('test', '--watch=false'); diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts b/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts index 7f1dff027d3e..c3c2b47556ca 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts @@ -16,10 +16,10 @@ export default function () { ) .then(() => ng('generate', 'component', 'test-component')) .then(() => expectFileToExist(appDir)) - .then(() => expectFileToExist(join(appDir, 'test-component.component.ts'))) - .then(() => expectFileToExist(join(appDir, 'test-component.component.spec.ts'))) - .then(() => expectFileToExist(join(appDir, 'test-component.component.ng.html'))) - .then(() => expectFileToExist(join(appDir, 'test-component.component.css'))) + .then(() => expectFileToExist(join(appDir, 'test-component.ts'))) + .then(() => expectFileToExist(join(appDir, 'test-component.spec.ts'))) + .then(() => expectFileToExist(join(appDir, 'test-component.ng.html'))) + .then(() => expectFileToExist(join(appDir, 'test-component.css'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts b/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts index 88e610ed27a4..3f8f8bb329d3 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts @@ -18,14 +18,12 @@ export default function () { ) .then(() => ng('generate', 'component', 'test-component')) .then(() => expectFileToExist(componentDir)) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.ts'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.spec.ts'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.ts'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.spec.ts'))) .then(() => - expectToFail(() => - expectFileToExist(join(componentDir, 'test-component.component.ng.html')), - ), + expectToFail(() => expectFileToExist(join(componentDir, 'test-component.ng.html'))), ) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.css'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.css'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts b/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts index 44dcc11b7542..ec2748b35424 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts @@ -17,10 +17,10 @@ export default function () { ) .then(() => ng('generate', 'component', 'test-component')) .then(() => expectFileToExist(componentDir)) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.ts'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.spec.ts'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.ng.html'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.component.css'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.ts'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.spec.ts'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.ng.html'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.css'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts b/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts index 371455156246..27aaaa901d89 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts @@ -14,19 +14,19 @@ export default async function () { await ng('generate', 'component', `${upperDirs}/test-component`); // Ensure component is created in the correct location relative to the workspace root - await expectFileToExist(join(componentDirectory, 'test-component.component.ts')); - await expectFileToExist(join(componentDirectory, 'test-component.component.spec.ts')); - await expectFileToExist(join(componentDirectory, 'test-component.component.ng.html')); - await expectFileToExist(join(componentDirectory, 'test-component.component.css')); + await expectFileToExist(join(componentDirectory, 'test-component.ts')); + await expectFileToExist(join(componentDirectory, 'test-component.spec.ts')); + await expectFileToExist(join(componentDirectory, 'test-component.ng.html')); + await expectFileToExist(join(componentDirectory, 'test-component.css')); // Generate another component await ng('generate', 'component', `${upperDirs}/Test-Component-Two`); // Ensure component is created in the correct location relative to the workspace root - await expectFileToExist(join(componentTwoDirectory, 'test-component-two.component.ts')); - await expectFileToExist(join(componentTwoDirectory, 'test-component-two.component.spec.ts')); - await expectFileToExist(join(componentTwoDirectory, 'test-component-two.component.ng.html')); - await expectFileToExist(join(componentTwoDirectory, 'test-component-two.component.css')); + await expectFileToExist(join(componentTwoDirectory, 'test-component-two.ts')); + await expectFileToExist(join(componentTwoDirectory, 'test-component-two.spec.ts')); + await expectFileToExist(join(componentTwoDirectory, 'test-component-two.ng.html')); + await expectFileToExist(join(componentTwoDirectory, 'test-component-two.css')); // Ensure unit test execute and pass await ng('test', '--watch=false'); diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-prefix.ts b/tests/legacy-cli/e2e/tests/generate/component/component-prefix.ts index e433dcc973b2..befa96939b00 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-prefix.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-prefix.ts @@ -17,11 +17,9 @@ export default function () { }), ) .then(() => ng('generate', 'component', 'test-component')) - .then(() => - expectFileToMatch(join(testCompDir, 'test-component.component.ts'), /selector: 'pre-/), - ) + .then(() => expectFileToMatch(join(testCompDir, 'test-component.ts'), /selector: 'pre-/)) .then(() => ng('g', 'c', 'alias')) - .then(() => expectFileToMatch(join(aliasCompDir, 'alias.component.ts'), /selector: 'pre-/)) + .then(() => expectFileToMatch(join(aliasCompDir, 'alias.ts'), /selector: 'pre-/)) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) diff --git a/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts b/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts index f849929e0085..f1e115dc719a 100644 --- a/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts +++ b/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts @@ -16,10 +16,10 @@ export default function () { ) .then(() => ng('generate', 'component', 'test-component')) .then(() => expectFileToExist(compDir)) - .then(() => expectFileToExist(join(compDir, 'test-component.component.ts'))) - .then(() => expectFileToExist(join(compDir, 'test-component.component.spec.ts'))) - .then(() => expectFileToExist(join(compDir, 'test-component.component.ng.html'))) - .then(() => expectFileToExist(join(compDir, 'test-component.component.css'))) + .then(() => expectFileToExist(join(compDir, 'test-component.ts'))) + .then(() => expectFileToExist(join(compDir, 'test-component.spec.ts'))) + .then(() => expectFileToExist(join(compDir, 'test-component.ng.html'))) + .then(() => expectFileToExist(join(compDir, 'test-component.css'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) diff --git a/tests/legacy-cli/e2e/tests/generate/schematic-defaults.ts b/tests/legacy-cli/e2e/tests/generate/schematic-defaults.ts index 7e015a0d6638..7c9987d92321 100644 --- a/tests/legacy-cli/e2e/tests/generate/schematic-defaults.ts +++ b/tests/legacy-cli/e2e/tests/generate/schematic-defaults.ts @@ -12,8 +12,8 @@ export default async function () { // Generate component in application to verify that it's minimal const { stdout } = await ng('generate', 'component', 'foo'); - if (!stdout.includes('foo.component.scss')) { - throw new Error('Expected "foo.component.scss" to exist.'); + if (!stdout.includes('foo.scss')) { + throw new Error('Expected "foo.scss" to exist.'); } // Generate another project with different settings @@ -23,6 +23,7 @@ export default async function () { config.projects['test-project-two'].schematics = { '@schematics/angular:component': { style: 'less', + type: 'Component', }, }; }); diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts b/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts index 0fd91f8b8dae..bb1f915040ab 100644 --- a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts +++ b/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts @@ -15,24 +15,21 @@ export default async function () { // Setup an i18n enabled component await ng('generate', 'component', 'i18n-test'); - await writeFile( - join('src/app/i18n-test', 'i18n-test.component.ng.html'), - '

Hello world

', - ); + await writeFile(join('src/app/i18n-test', 'i18n-test.ng.html'), '

Hello world

'); await writeFile( - 'src/app/app.component.ts', + 'src/app/app.ts', ` import { Component } from '@angular/core'; - import { I18nTestComponent } from './i18n-test/i18n-test.component'; + import { I18nTest } from './i18n-test/i18n-test'; @Component({ standalone: true, selector: 'app-root', - imports: [I18nTestComponent], + imports: [I18nTest], template: '' }) - export class AppComponent {} + export class App {} `, ); diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts b/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts index 754f5d6ebc02..66bec6217e60 100644 --- a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts +++ b/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts @@ -7,24 +7,17 @@ import { readNgVersion } from '../../utils/version'; export default async function () { // Setup a library await ng('generate', 'library', 'i18n-lib-test'); - await replaceInFile( - 'projects/i18n-lib-test/src/lib/i18n-lib-test.component.ts', - '

', - '

', - ); + await replaceInFile('projects/i18n-lib-test/src/lib/i18n-lib-test.ts', '

', '

'); // Build library await ng('build', 'i18n-lib-test', '--configuration=development'); // Consume library in application - await replaceInFile('src/app/app.component.ts', 'imports: [', 'imports: [I18nLibTestComponent,'); - await prependToFile( - 'src/app/app.component.ts', - `import { I18nLibTestComponent } from 'i18n-lib-test';`, - ); + await replaceInFile('src/app/app.ts', 'imports: [', 'imports: [I18nLibTest,'); + await prependToFile('src/app/app.ts', `import { I18nLibTest } from 'i18n-lib-test';`); await writeFile( - 'src/app/app.component.ng.html', + 'src/app/app.ng.html', `

Hello world

@@ -42,11 +35,8 @@ export default async function () { await ng('extract-i18n'); await expectFileToMatch('messages.xlf', 'Hello world'); await expectFileToMatch('messages.xlf', 'i18n-lib-test works!'); - await expectFileToMatch('messages.xlf', 'src/app/app.component.ng.html'); - await expectFileToMatch( - 'messages.xlf', - 'projects/i18n-lib-test/src/lib/i18n-lib-test.component.ts', - ); + await expectFileToMatch('messages.xlf', 'src/app/app.ng.html'); + await expectFileToMatch('messages.xlf', 'projects/i18n-lib-test/src/lib/i18n-lib-test.ts'); await uninstallPackage('@angular/localize'); } diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts b/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts index e4ea4c39358b..5682355915ff 100644 --- a/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts +++ b/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts @@ -9,24 +9,21 @@ import { readNgVersion } from '../../utils/version'; export default async function () { // Setup an i18n enabled component await ng('generate', 'component', 'i18n-test'); - await writeFile( - join('src/app/i18n-test', 'i18n-test.component.ng.html'), - '

Hello world

', - ); + await writeFile(join('src/app/i18n-test', 'i18n-test.ng.html'), '

Hello world

'); // Actually use the generated component to ensure it is present in the application output await writeFile( - 'src/app/app.component.ts', + 'src/app/app.ts', ` import { Component } from '@angular/core'; - import { I18nTestComponent } from './i18n-test/i18n-test.component'; + import { I18nTest } from './i18n-test/i18n-test'; @Component({ standalone: true, selector: 'app-root', - imports: [I18nTestComponent], + imports: [I18nTest], template: '' }) - export class AppComponent {} + export class App {} `, ); diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts index 46379cbe9bb9..8123b6f1a663 100644 --- a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts +++ b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts @@ -17,7 +17,7 @@ export default async function () { : readNgVersion(); }); - await appendToFile('src/app/app.component.ng.html', ''); + await appendToFile('src/app/app.ng.html', ''); // Add app-shell and service-worker await silentNg('generate', 'app-shell'); diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts index e997286febcd..aee5afa0338b 100644 --- a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts +++ b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts @@ -23,7 +23,7 @@ export default async function () { : readNgVersion(); }); - await appendToFile('src/app/app.component.ng.html', ''); + await appendToFile('src/app/app.ng.html', ''); await ng('generate', 'app-shell', '--project', 'test-project'); if (isSnapshotBuild) { @@ -62,7 +62,7 @@ export default async function () { }); await writeFile( - 'src/app/app-shell/app-shell.component.ng.html', + 'src/app/app-shell/app-shell.ng.html', '

Hello i18n!

', ); @@ -70,7 +70,7 @@ export default async function () { // Extraction of i18n only works on browser targets. // Let's add the same translation that there is in the app-shell await writeFile( - 'src/app/app.component.ng.html', + 'src/app/app.ng.html', '

Hello i18n!

', ); @@ -79,9 +79,9 @@ export default async function () { await expectFileToMatch('src/locale/messages.xlf', `source-language="en-US"`); await expectFileToMatch('src/locale/messages.xlf', `An introduction header for this sample`); - // Clean up app.component.ng.html so that we can easily + // Clean up app.ng.html so that we can easily // find the translation text - await writeFile('src/app/app.component.ng.html', ''); + await writeFile('src/app/app.ng.html', ''); for (const { lang, translation } of langTranslations) { if (lang != 'en-US') { diff --git a/tests/legacy-cli/e2e/tests/i18n/setup.ts b/tests/legacy-cli/e2e/tests/i18n/setup.ts index aa8cde291d7a..73ca0a90b00a 100644 --- a/tests/legacy-cli/e2e/tests/i18n/setup.ts +++ b/tests/legacy-cli/e2e/tests/i18n/setup.ts @@ -98,7 +98,7 @@ export const baseHrefs: { [l: string]: string } = { export async function setupI18nConfig() { // Add component with i18n content, both translations and localeData (plural, dates). await writeFile( - 'src/app/app.component.ts', + 'src/app/app.ts', ` import { Component, Inject, LOCALE_ID } from '@angular/core'; import { DatePipe } from '@angular/common'; @@ -108,9 +108,9 @@ export async function setupI18nConfig() { selector: 'app-root', imports: [DatePipe, RouterOutlet], standalone: true, - templateUrl: './app.component.ng.html' + templateUrl: './app.ng.html' }) - export class AppComponent { + export class App { constructor(@Inject(LOCALE_ID) public locale: string) { } title = 'i18n'; jan = new Date(2000, 0, 1); @@ -119,7 +119,7 @@ export async function setupI18nConfig() { `, ); await writeFile( - `src/app/app.component.ng.html`, + `src/app/app.ng.html`, `

Hello {{ title }}!

{{ locale }}

@@ -140,7 +140,7 @@ export async function setupI18nConfig() { Hello ! - src/app/app.component.ng.html + src/app/app.ng.html 2,3 An introduction header for this sample @@ -148,14 +148,14 @@ export async function setupI18nConfig() { Updated - src/app/app.component.ng.html + src/app/app.ng.html 5,6 {VAR_PLURAL, plural, =0 {just now} =1 {one minute ago} other { minutes ago}} - src/app/app.component.ng.html + src/app/app.ng.html 5,6 @@ -168,7 +168,7 @@ export async function setupI18nConfig() { // ng serve support: https://github.com/angular/angular-cli/issues/16248 await writeFile('src/app/dynamic.ts', `export const abc = 5;`); await appendToFile( - 'src/app/app.component.ts', + 'src/app/app.ts', ` (async () => { await import('./dynamic'); })(); `, diff --git a/tests/legacy-cli/e2e/tests/misc/browsers.ts b/tests/legacy-cli/e2e/tests/misc/browsers.ts index cb133dbef117..90c803e3b24f 100644 --- a/tests/legacy-cli/e2e/tests/misc/browsers.ts +++ b/tests/legacy-cli/e2e/tests/misc/browsers.ts @@ -11,7 +11,7 @@ export default async function () { } // Workaround for https://github.com/angular/angular/issues/32192 - await replaceInFile('src/app/app.component.ng.html', /class="material-icons"/g, ''); + await replaceInFile('src/app/app.ng.html', /class="material-icons"/g, ''); await ng('build'); diff --git a/tests/legacy-cli/e2e/tests/misc/duplicate-command-line-option.ts b/tests/legacy-cli/e2e/tests/misc/duplicate-command-line-option.ts index a445e9051ade..0042a363e156 100644 --- a/tests/legacy-cli/e2e/tests/misc/duplicate-command-line-option.ts +++ b/tests/legacy-cli/e2e/tests/misc/duplicate-command-line-option.ts @@ -15,5 +15,5 @@ export default async function () { throw new Error(`Expected stderr to contain: "${warningMatch}".`); } - await expectFileToExist('src/app/test-component/test-component.component.sass'); + await expectFileToExist('src/app/test-component/test-component.sass'); } diff --git a/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts b/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts index 3973636e07f5..463a3b971119 100644 --- a/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts +++ b/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts @@ -5,12 +5,12 @@ export default async function () { await ng('generate', 'service', 'user'); // Update the application to use the new service - await prependToFile('src/app/app.component.ts', "import { UserService } from './user.service';"); + await prependToFile('src/app/app.ts', "import { UserService } from './user.service';"); await replaceInFile( - 'src/app/app.component.ts', - 'export class AppComponent {', - 'export class AppComponent {\n constructor(user: UserService) {}', + 'src/app/app.ts', + 'export class App {', + 'export class App {\n constructor(user: UserService) {}', ); // Execute the application's tests with emitDecoratorMetadata disabled (default) diff --git a/tests/legacy-cli/e2e/tests/misc/forwardref-es2015.ts b/tests/legacy-cli/e2e/tests/misc/forwardref-es2015.ts index cdf3eef6a313..32ca39e89713 100644 --- a/tests/legacy-cli/e2e/tests/misc/forwardref-es2015.ts +++ b/tests/legacy-cli/e2e/tests/misc/forwardref-es2015.ts @@ -5,25 +5,25 @@ import { expectToFail } from '../../utils/utils'; export default async function () { // Update the application to use a forward reference await replaceInFile( - 'src/app/app.component.ts', + 'src/app/app.ts', "import { Component } from '@angular/core';", "import { Component, Inject, Injectable, forwardRef } from '@angular/core';", ); - await appendToFile('src/app/app.component.ts', '\n@Injectable() export class Lock { }\n'); + await appendToFile('src/app/app.ts', '\n@Injectable() export class Lock { }\n'); await replaceInFile( - 'src/app/app.component.ts', - 'export class AppComponent {', - 'export class AppComponent {\n constructor(@Inject(forwardRef(() => Lock)) lock: Lock) {}', + 'src/app/app.ts', + 'export class App {', + 'export class App {\n constructor(@Inject(forwardRef(() => Lock)) lock: Lock) {}', ); // Update the application's unit tests to include the new injectable await replaceInFile( - 'src/app/app.component.spec.ts', - "import { AppComponent } from './app.component';", - "import { AppComponent, Lock } from './app.component';", + 'src/app/app.spec.ts', + "import { App } from './app';", + "import { App, Lock } from './app';", ); await replaceInFile( - 'src/app/app.component.spec.ts', + 'src/app/app.spec.ts', 'TestBed.configureTestingModule({', 'TestBed.configureTestingModule({ providers: [Lock],', ); diff --git a/tests/legacy-cli/e2e/tests/misc/trusted-types.ts b/tests/legacy-cli/e2e/tests/misc/trusted-types.ts index 3c927f15ad8d..325ee521fe6d 100644 --- a/tests/legacy-cli/e2e/tests/misc/trusted-types.ts +++ b/tests/legacy-cli/e2e/tests/misc/trusted-types.ts @@ -16,7 +16,7 @@ export default async function () { await replaceInFile( 'src/app/app.routes.ts', 'routes: Routes = [];', - `routes: Routes = [{path: 'lazy', loadComponent: () => import('./lazy/lazy.component').then(c => c.LazyComponent)}];`, + `routes: Routes = [{path: 'lazy', loadComponent: () => import('./lazy/lazy').then(c => c.Lazy)}];`, ); // Add lazy route e2e diff --git a/tests/legacy-cli/e2e/tests/test/test-code-coverage-exclude.ts b/tests/legacy-cli/e2e/tests/test/test-code-coverage-exclude.ts index 52b8989218b5..3533e6c8e9a9 100644 --- a/tests/legacy-cli/e2e/tests/test/test-code-coverage-exclude.ts +++ b/tests/legacy-cli/e2e/tests/test/test-code-coverage-exclude.ts @@ -5,7 +5,7 @@ import { expectToFail } from '../../utils/utils'; export default async function () { // This test is already in build-angular, but that doesn't run on Windows. await silentNg('test', '--no-watch', '--code-coverage'); - await expectFileToExist('coverage/test-project/app.component.ts.html'); + await expectFileToExist('coverage/test-project/app.ts.html'); // Delete coverage directory await rimraf('coverage'); @@ -13,10 +13,10 @@ export default async function () { 'test', '--no-watch', '--code-coverage', - `--code-coverage-exclude='src/**/app.component.ts'`, + `--code-coverage-exclude='src/**/app.ts'`, ); // Doesn't include excluded. await expectFileToExist('coverage/test-project/index.html'); - await expectToFail(() => expectFileToExist('coverage/test-project/app.component.ts.html')); + await expectToFail(() => expectFileToExist('coverage/test-project/app.ts.html')); } diff --git a/tests/legacy-cli/e2e/tests/test/test-fail-single-run.ts b/tests/legacy-cli/e2e/tests/test/test-fail-single-run.ts index 90f7d73736c1..d2054e7c37ee 100644 --- a/tests/legacy-cli/e2e/tests/test/test-fail-single-run.ts +++ b/tests/legacy-cli/e2e/tests/test/test-fail-single-run.ts @@ -6,7 +6,7 @@ export default function () { // TODO(architect): Delete this test. It is now in devkit/build-angular. // Fails on single run with broken compilation. - return writeFile('src/app.component.spec.ts', '

definitely not typescript

').then(() => + return writeFile('src/app.spec.ts', '

definitely not typescript

').then(() => expectToFail(() => ng('test', '--watch=false')), ); } diff --git a/tests/legacy-cli/e2e/tests/test/test-jasmine-clock.ts b/tests/legacy-cli/e2e/tests/test/test-jasmine-clock.ts index f676b324a2c6..37b164ff5914 100644 --- a/tests/legacy-cli/e2e/tests/test/test-jasmine-clock.ts +++ b/tests/legacy-cli/e2e/tests/test/test-jasmine-clock.ts @@ -3,12 +3,12 @@ import { writeFile } from '../../utils/fs'; export default async function () { await writeFile( - 'src/app/app.component.spec.ts', + 'src/app/app.spec.ts', ` import { TestBed } from '@angular/core/testing'; - import { AppComponent } from './app.component'; + import { App } from './app'; - describe('AppComponent', () => { + describe('App', () => { beforeAll(() => { jasmine.clock().install(); }); @@ -18,11 +18,11 @@ export default async function () { }); beforeEach(() => TestBed.configureTestingModule({ - imports: [AppComponent] + imports: [App] })); it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); + const fixture = TestBed.createComponent(App); expect(fixture.componentInstance).toBeTruthy(); }); }); diff --git a/tests/legacy-cli/e2e/tests/test/test-scripts.ts b/tests/legacy-cli/e2e/tests/test/test-scripts.ts index 4e308a6922b9..acbcc66dc230 100644 --- a/tests/legacy-cli/e2e/tests/test/test-scripts.ts +++ b/tests/legacy-cli/e2e/tests/test/test-scripts.ts @@ -16,31 +16,31 @@ export default async function () { declare var stringScriptGlobal: any; declare var inputScriptGlobal: any; `, - 'src/app/app.component.ts': ` + 'src/app/app.ts': ` import { Component } from '@angular/core'; @Component({ selector: 'app-root', template: '', standalone: false }) - export class AppComponent { + export class App { stringScriptGlobalProp = stringScriptGlobal; inputScriptGlobalProp = inputScriptGlobal; } `, - 'src/app/app.component.spec.ts': ` + 'src/app/app.spec.ts': ` import { TestBed } from '@angular/core/testing'; - import { AppComponent } from './app.component'; + import { App } from './app'; - describe('AppComponent', () => { + describe('App', () => { beforeEach(() => TestBed.configureTestingModule({ - declarations: [AppComponent] + declarations: [App] })); it('should have access to string-script.js', () => { - let app = TestBed.createComponent(AppComponent).debugElement.componentInstance; + let app = TestBed.createComponent(App).debugElement.componentInstance; expect(app.stringScriptGlobalProp).toEqual('string-scripts.js'); }); it('should have access to input-script.js', () => { - let app = TestBed.createComponent(AppComponent).debugElement.componentInstance; + let app = TestBed.createComponent(App).debugElement.componentInstance; expect(app.inputScriptGlobalProp).toEqual('input-scripts.js'); }); }); diff --git a/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts b/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts index e75e214a2457..9e2a8e3f36fa 100644 --- a/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts +++ b/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts @@ -6,7 +6,7 @@ import { assertIsError } from '../../utils/utils'; export default async function () { await writeFile( - 'src/app/app.component.spec.ts', + 'src/app/app.spec.ts', ` it('should fail', () => { expect(undefined).toBeTruthy(); @@ -20,7 +20,7 @@ export default async function () { throw new Error('ng test should have failed.'); } catch (error) { assertIsError(error); - assert.match(error.message, /\(src\/app\/app\.component\.spec\.ts:3:27/); + assert.match(error.message, /\(src\/app\/app\.spec\.ts:3:27/); assert.doesNotMatch(error.message, /_karma_webpack_/); } diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts index 387d14ed67f6..477862d61d70 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts @@ -19,14 +19,14 @@ export default async function () { await installWorkspacePackages(); await writeMultipleFiles({ - // Replace the template of app.component.ng.html as it makes it harder to debug - 'src/app/app.component.ng.html': '', + // Replace the template of app.ng.html as it makes it harder to debug + 'src/app/app.ng.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; + import { Home } from './home/home'; export const routes: Routes = [ - { path: 'home', component: HomeComponent } + { path: 'home', component: Home } ]; `, 'src/app/app.routes.server.ts': ` @@ -87,7 +87,7 @@ export default async function () { // Modify the home component and validate the change. await modifyFileAndWaitUntilUpdated( - 'src/app/home/home.component.ng.html', + 'src/app/home/home.ng.html', 'home works', 'yay home works!!!', true, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts index 851ccfef87f7..92152f44a77e 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts @@ -20,14 +20,14 @@ export default async function () { await installPackage('fastify@5'); await writeMultipleFiles({ - // Replace the template of app.component.ng.html as it makes it harder to debug - 'src/app/app.component.ng.html': '', + // Replace the template of app.ng.html as it makes it harder to debug + 'src/app/app.ng.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; + import { Home } from './home/home'; export const routes: Routes = [ - { path: 'home', component: HomeComponent } + { path: 'home', component: Home } ]; `, 'src/app/app.routes.server.ts': ` @@ -87,7 +87,7 @@ export default async function () { // Modify the home component and validate the change. await modifyFileAndWaitUntilUpdated( - 'src/app/home/home.component.ng.html', + 'src/app/home/home.ng.html', 'home works', 'yay home works!!!', true, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts index 81950a061979..99bf3a02b5eb 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts @@ -20,14 +20,14 @@ export default async function () { await installPackage('h3@1'); await writeMultipleFiles({ - // Replace the template of app.component.ng.html as it makes it harder to debug - 'src/app/app.component.ng.html': '', + // Replace the template of app.ng.html as it makes it harder to debug + 'src/app/app.ng.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; + import { Home } from './home/home'; export const routes: Routes = [ - { path: 'home', component: HomeComponent } + { path: 'home', component: Home } ]; `, 'src/app/app.routes.server.ts': ` @@ -78,7 +78,7 @@ export default async function () { // Modify the home component and validate the change. await modifyFileAndWaitUntilUpdated( - 'src/app/home/home.component.ng.html', + 'src/app/home/home.ng.html', 'home works', 'yay home works!!!', true, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts index 2d65f0e7b9ff..94ff1e323112 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts @@ -20,14 +20,14 @@ export default async function () { await installPackage('hono@4'); await writeMultipleFiles({ - // Replace the template of app.component.ng.html as it makes it harder to debug - 'src/app/app.component.ng.html': '', + // Replace the template of app.ng.html as it makes it harder to debug + 'src/app/app.ng.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; + import { Home } from './home/home'; export const routes: Routes = [ - { path: 'home', component: HomeComponent } + { path: 'home', component: Home } ]; `, 'src/app/app.routes.server.ts': ` @@ -70,7 +70,7 @@ export default async function () { // Modify the home component and validate the change. await modifyFileAndWaitUntilUpdated( - 'src/app/home/home.component.ng.html', + 'src/app/home/home.ng.html', 'home works', 'yay home works!!!', true, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts b/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts index 6731c15b67cc..a0d7c87bed13 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts @@ -22,7 +22,7 @@ export default async function () { // Create Error. await appendToFile( - 'src/app/app.component.ts', + 'src/app/app.ts', ` (() => { throw new Error('something happened!'); @@ -37,7 +37,7 @@ export default async function () { // The error is also sent in the browser, so we don't need to scrap the stderr. match( text, - /something happened.+at eval \(.+[\\/]+e2e-test[\\/]+test-project[\\/]+src[\\/]+app[\\/]+app\.component\.ts:\d+:\d+\)/, + /something happened.+at eval \(.+[\\/]+e2e-test[\\/]+test-project[\\/]+src[\\/]+app[\\/]+app\.ts:\d+:\d+\)/, ); doesNotMatch(text, /vite-root/); } diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts index d40c9853951f..429296c6d059 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts @@ -18,14 +18,14 @@ export default async function () { await installWorkspacePackages(); await writeMultipleFiles({ - // Replace the template of app.component.ng.html as it makes it harder to debug - 'src/app/app.component.ng.html': '', + // Replace the template of app.ng.html as it makes it harder to debug + 'src/app/app.ng.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; - import { HomeComponent } from './home/home.component'; + import { Home } from './home/home'; export const routes: Routes = [ - { path: 'home', component: HomeComponent } + { path: 'home', component: Home } ]; `, 'src/app/app.routes.server.ts': ` From ea8b3fc564d0b147a791b158aa7968912bab4b36 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Mar 2025 13:43:17 -0400 Subject: [PATCH 015/160] build: move `@angular/cli` specific dependencies out of root With the migration to `rules_js`, package specific dependencies now only need to be referenced with the source `package.json` for each specific package. Most of the `@angular/cli` specific dependencies have now been moved. This is not exhaustive and further changes will continue to move additional dependencies. --- package.json | 8 ------- packages/angular/cli/BUILD.bazel | 16 ++++++------- .../angular_devkit/schematics_cli/BUILD.bazel | 2 +- packages/schematics/angular/BUILD.bazel | 1 - pnpm-lock.yaml | 24 ------------------- 5 files changed, 9 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index c05f46db4cfa..5eafcf34a76d 100644 --- a/package.json +++ b/package.json @@ -72,8 +72,6 @@ "@eslint/compat": "1.2.7", "@eslint/eslintrc": "3.3.0", "@eslint/js": "9.22.0", - "@inquirer/prompts": "7.3.3", - "@listr2/prompt-adapter-inquirer": "2.0.18", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-json": "^6.1.0", @@ -106,7 +104,6 @@ "@typescript-eslint/eslint-plugin": "8.26.1", "@typescript-eslint/parser": "8.26.1", "@web/test-runner": "^0.20.0", - "@yarnpkg/lockfile": "1.1.0", "ajv": "8.17.1", "ajv-formats": "3.0.1", "ansi-colors": "4.1.3", @@ -129,7 +126,6 @@ "http-proxy-middleware": "3.0.3", "https-proxy-agent": "7.0.6", "husky": "9.1.7", - "ini": "5.0.0", "istanbul-lib-instrument": "6.0.3", "jasmine": "~5.6.0", "jasmine-core": "~5.6.0", @@ -150,11 +146,8 @@ "mrmime": "2.0.1", "ng-packagr": "20.0.0-next.1", "npm": "^11.0.0", - "npm-package-arg": "12.0.2", - "npm-pick-manifest": "10.0.0", "open": "10.1.0", "ora": "5.4.1", - "pacote": "20.0.0", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.8.0", @@ -184,7 +177,6 @@ "verdaccio": "6.0.5", "verdaccio-auth-memory": "^10.0.0", "watchpack": "2.4.2", - "yargs": "17.7.2", "yargs-parser": "21.1.1", "zone.js": "^0.15.0" }, diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index 5fce2f4bab5c..b3da140b2c7a 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -48,10 +48,16 @@ ts_project( ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", ":node_modules/@angular-devkit/schematics", + ":node_modules/@inquirer/prompts", + ":node_modules/@listr2/prompt-adapter-inquirer", + ":node_modules/@yarnpkg/lockfile", + ":node_modules/ini", + ":node_modules/npm-package-arg", + ":node_modules/npm-pick-manifest", + ":node_modules/pacote", ":node_modules/resolve", + ":node_modules/yargs", "//:node_modules/@angular/core", - "//:node_modules/@inquirer/prompts", - "//:node_modules/@listr2/prompt-adapter-inquirer", "//:node_modules/@types/ini", "//:node_modules/@types/node", "//:node_modules/@types/npm-package-arg", @@ -60,16 +66,10 @@ ts_project( "//:node_modules/@types/semver", "//:node_modules/@types/yargs", "//:node_modules/@types/yarnpkg__lockfile", - "//:node_modules/@yarnpkg/lockfile", - "//:node_modules/ini", "//:node_modules/jsonc-parser", "//:node_modules/listr2", - "//:node_modules/npm-package-arg", - "//:node_modules/npm-pick-manifest", - "//:node_modules/pacote", "//:node_modules/semver", "//:node_modules/symbol-observable", - "//:node_modules/yargs", ], ) diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index 59d464306f19..fae06e0afb2a 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -48,7 +48,7 @@ ts_project( deps = [ ":node_modules/@angular-devkit/core", ":node_modules/@angular-devkit/schematics", - "//:node_modules/@inquirer/prompts", + ":node_modules/@inquirer/prompts", "//:node_modules/@types/node", "//:node_modules/@types/yargs-parser", "//:node_modules/ansi-colors", diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index 9f44e479010b..f2af29f36810 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -90,7 +90,6 @@ ts_project( deps = [ ":node_modules/@angular-devkit/core", ":node_modules/@angular-devkit/schematics", - "//:node_modules/@inquirer/prompts", "//:node_modules/@types/node", "//:node_modules/browserslist", "//:node_modules/jsonc-parser", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 138029931837..70c9ec400c20 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,12 +92,6 @@ importers: '@eslint/js': specifier: 9.22.0 version: 9.22.0 - '@inquirer/prompts': - specifier: 7.3.3 - version: 7.3.3(@types/node@20.17.24) - '@listr2/prompt-adapter-inquirer': - specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.3.3(@types/node@20.17.24)) '@rollup/plugin-alias': specifier: ^5.1.1 version: 5.1.1(rollup@4.35.0) @@ -194,9 +188,6 @@ importers: '@web/test-runner': specifier: ^0.20.0 version: 0.20.0 - '@yarnpkg/lockfile': - specifier: 1.1.0 - version: 1.1.0 ajv: specifier: 8.17.1 version: 8.17.1 @@ -263,9 +254,6 @@ importers: husky: specifier: 9.1.7 version: 9.1.7 - ini: - specifier: 5.0.0 - version: 5.0.0 istanbul-lib-instrument: specifier: 6.0.3 version: 6.0.3 @@ -326,21 +314,12 @@ importers: npm: specifier: ^11.0.0 version: 11.2.0 - npm-package-arg: - specifier: 12.0.2 - version: 12.0.2 - npm-pick-manifest: - specifier: 10.0.0 - version: 10.0.0 open: specifier: 10.1.0 version: 10.1.0 ora: specifier: 5.4.1 version: 5.4.1 - pacote: - specifier: 20.0.0 - version: 20.0.0 parse5-html-rewriting-stream: specifier: 7.0.0 version: 7.0.0 @@ -428,9 +407,6 @@ importers: watchpack: specifier: 2.4.2 version: 2.4.2 - yargs: - specifier: 17.7.2 - version: 17.7.2 yargs-parser: specifier: 21.1.1 version: 21.1.1 From ce7a8ec0f206dc5525e112cce59332e6fd0a2d43 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Mar 2025 13:46:16 -0400 Subject: [PATCH 016/160] build: remove unused dependency `debug` The `debug` package is unused and has now been removed from the root `package.json`. --- package.json | 1 - packages/angular/cli/BUILD.bazel | 2 +- pnpm-lock.yaml | 35 +++++++++++++++----------------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 5eafcf34a76d..1328ec1cebf1 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,6 @@ "browserslist": "^4.21.5", "buffer": "6.0.3", "chokidar": "4.0.3", - "debug": "^4.1.1", "esbuild": "0.25.1", "esbuild-wasm": "0.25.1", "eslint": "9.22.0", diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index b3da140b2c7a..b12547f0ee12 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -111,10 +111,10 @@ ts_project( ":angular-cli", ":node_modules/@angular-devkit/core", ":node_modules/@angular-devkit/schematics", + ":node_modules/yargs", "//:node_modules/@types/semver", "//:node_modules/@types/yargs", "//:node_modules/semver", - "//:node_modules/yargs", ], ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 70c9ec400c20..e92f2c071db9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -202,7 +202,7 @@ importers: version: 0.2.0 browser-sync: specifier: 3.0.3 - version: 3.0.3(debug@4.4.0) + version: 3.0.3 browserslist: specifier: ^4.21.5 version: 4.24.4 @@ -212,9 +212,6 @@ importers: chokidar: specifier: 4.0.3 version: 4.0.3 - debug: - specifier: ^4.1.1 - version: 4.4.0(supports-color@10.0.0) esbuild: specifier: 0.25.1 version: 0.25.1 @@ -274,7 +271,7 @@ importers: version: 3.3.1 karma: specifier: ~6.4.0 - version: 6.4.4(debug@4.4.0) + version: 6.4.4 karma-chrome-launcher: specifier: ~3.2.0 version: 3.2.0 @@ -283,10 +280,10 @@ importers: version: 2.2.1 karma-jasmine: specifier: ~5.1.0 - version: 5.1.0(karma@6.4.4(debug@4.4.0)) + version: 5.1.0(karma@6.4.4) karma-jasmine-html-reporter: specifier: ~2.1.0 - version: 2.1.0(jasmine-core@5.6.0)(karma-jasmine@5.1.0(karma@6.4.4(debug@4.4.0)))(karma@6.4.4(debug@4.4.0)) + version: 2.1.0(jasmine-core@5.6.0)(karma-jasmine@5.1.0(karma@6.4.4))(karma@6.4.4) karma-source-map-support: specifier: 1.4.0 version: 1.4.0 @@ -817,7 +814,7 @@ importers: version: 7.4.2(webpack@5.98.0(esbuild@0.25.1)) webpack-dev-server: specifier: 5.2.0 - version: 5.2.0(debug@4.4.0)(webpack@5.98.0(esbuild@0.25.1)) + version: 5.2.0(webpack@5.98.0(esbuild@0.25.1)) webpack-merge: specifier: 6.0.1 version: 6.0.1 @@ -856,7 +853,7 @@ importers: version: 5.98.0(esbuild@0.25.1) webpack-dev-server: specifier: 5.2.0 - version: 5.2.0(debug@4.4.0)(webpack@5.98.0(esbuild@0.25.1)) + version: 5.2.0(webpack@5.98.0(esbuild@0.25.1)) packages/angular_devkit/core: dependencies: @@ -11095,7 +11092,7 @@ snapshots: - supports-color - utf-8-validate - browser-sync@3.0.3(debug@4.4.0): + browser-sync@3.0.3: dependencies: browser-sync-client: 3.0.3 browser-sync-ui: 3.0.3 @@ -12737,7 +12734,7 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.7(@types/express@4.17.21)(debug@4.4.0): + http-proxy-middleware@2.0.7(@types/express@4.17.21): dependencies: '@types/http-proxy': 1.17.16 http-proxy: 1.18.1(debug@4.4.0) @@ -13315,22 +13312,22 @@ snapshots: transitivePeerDependencies: - supports-color - karma-jasmine-html-reporter@2.1.0(jasmine-core@5.6.0)(karma-jasmine@5.1.0(karma@6.4.4(debug@4.4.0)))(karma@6.4.4(debug@4.4.0)): + karma-jasmine-html-reporter@2.1.0(jasmine-core@5.6.0)(karma-jasmine@5.1.0(karma@6.4.4))(karma@6.4.4): dependencies: jasmine-core: 5.6.0 - karma: 6.4.4(debug@4.4.0) - karma-jasmine: 5.1.0(karma@6.4.4(debug@4.4.0)) + karma: 6.4.4 + karma-jasmine: 5.1.0(karma@6.4.4) - karma-jasmine@5.1.0(karma@6.4.4(debug@4.4.0)): + karma-jasmine@5.1.0(karma@6.4.4): dependencies: jasmine-core: 4.6.1 - karma: 6.4.4(debug@4.4.0) + karma: 6.4.4 karma-source-map-support@1.4.0: dependencies: source-map-support: 0.5.21 - karma@6.4.4(debug@4.4.0): + karma@6.4.4: dependencies: '@colors/colors': 1.5.0 body-parser: 1.20.3 @@ -15857,7 +15854,7 @@ snapshots: optionalDependencies: webpack: 5.98.0(esbuild@0.25.1) - webpack-dev-server@5.2.0(debug@4.4.0)(webpack@5.98.0(esbuild@0.25.1)): + webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.1)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -15874,7 +15871,7 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.7(@types/express@4.17.21)(debug@4.4.0) + http-proxy-middleware: 2.0.7(@types/express@4.17.21) ipaddr.js: 2.2.0 launch-editor: 2.10.0 open: 10.1.0 From d625332142b18b1dfb5e334ac04c62bd8fc07816 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 14 Mar 2025 06:04:22 +0000 Subject: [PATCH 017/160] build: update dependency vite to v6.2.2 --- packages/angular/build/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index beab6f8fa95c..c0f23df438ef 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -42,7 +42,7 @@ "semver": "7.7.1", "source-map-support": "0.5.21", "tinyglobby": "0.2.12", - "vite": "6.2.1", + "vite": "6.2.2", "watchpack": "2.4.2" }, "optionalDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e92f2c071db9..73704469f371 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -456,7 +456,7 @@ importers: version: 5.1.7(@types/node@20.17.24) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.1(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -506,8 +506,8 @@ importers: specifier: 0.2.12 version: 0.2.12 vite: - specifier: 6.2.1 - version: 6.2.1(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) + specifier: 6.2.2 + version: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -706,7 +706,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.1(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -7680,8 +7680,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@6.2.1: - resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==} + vite@6.2.2: + resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -10444,9 +10444,9 @@ snapshots: minimatch: 7.4.6 semver: 7.6.3 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.1(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))': dependencies: - vite: 6.2.1(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) '@web/browser-logs@0.4.1': dependencies: @@ -15787,7 +15787,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.1(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0): + vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0): dependencies: esbuild: 0.25.1 postcss: 8.5.3 From 0173c88f5003962add5c3329f3846cacb8c970a7 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 14 Mar 2025 05:03:34 +0000 Subject: [PATCH 018/160] build: update devinfra digest to 85eab90 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 4aab385c07ce..fa46f259c91d 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "47572aba6019f368057c00966ac7ce354b1d65bc", + commit = "85eab901e27abe60bb725fbfd8def94559cbe636", remote = "https://github.com/angular/dev-infra.git", ) From 0948ddebe07225ad3697c4ce5a230d8c3917d8d2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Mar 2025 14:40:33 -0400 Subject: [PATCH 019/160] refactor(@angular/cli): import from `node:fs/promises` where appropriate Several usages of `import { promises as fs } from 'node:fs'` have been adjusted to import directly from `node:fs/promises`. This is consistent with the rest of the source code usage. --- packages/angular/cli/lib/init.ts | 4 ++-- packages/angular/cli/src/commands/cache/clean/cli.ts | 4 ++-- packages/angular/cli/src/commands/cache/info/cli.ts | 2 +- packages/angular/cli/src/utilities/completion.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/angular/cli/lib/init.ts b/packages/angular/cli/lib/init.ts index 181166d621c4..1bcd8fdca3b9 100644 --- a/packages/angular/cli/lib/init.ts +++ b/packages/angular/cli/lib/init.ts @@ -8,7 +8,7 @@ import 'symbol-observable'; // symbol polyfill must go first -import { promises as fs } from 'node:fs'; +import { readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; import * as path from 'node:path'; import { SemVer, major } from 'semver'; @@ -62,7 +62,7 @@ let forceExit = false; let localVersion = cli.VERSION?.full; if (!localVersion) { try { - const localPackageJson = await fs.readFile( + const localPackageJson = await readFile( path.join(path.dirname(projectLocalCli), '../../package.json'), 'utf-8', ); diff --git a/packages/angular/cli/src/commands/cache/clean/cli.ts b/packages/angular/cli/src/commands/cache/clean/cli.ts index e037503846b6..a115b686b7e0 100644 --- a/packages/angular/cli/src/commands/cache/clean/cli.ts +++ b/packages/angular/cli/src/commands/cache/clean/cli.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { promises as fs } from 'node:fs'; +import { rm } from 'node:fs/promises'; import { Argv } from 'yargs'; import { CommandModule, @@ -28,7 +28,7 @@ export class CacheCleanModule extends CommandModule implements CommandModuleImpl run(): Promise { const { path } = getCacheConfig(this.context.workspace); - return fs.rm(path, { + return rm(path, { force: true, recursive: true, maxRetries: 3, diff --git a/packages/angular/cli/src/commands/cache/info/cli.ts b/packages/angular/cli/src/commands/cache/info/cli.ts index 51fd8ca6bc9e..447d92e02c1f 100644 --- a/packages/angular/cli/src/commands/cache/info/cli.ts +++ b/packages/angular/cli/src/commands/cache/info/cli.ts @@ -7,7 +7,7 @@ */ import { tags } from '@angular-devkit/core'; -import { promises as fs } from 'node:fs'; +import * as fs from 'node:fs/promises'; import { join } from 'node:path'; import { Argv } from 'yargs'; import { diff --git a/packages/angular/cli/src/utilities/completion.ts b/packages/angular/cli/src/utilities/completion.ts index 011968b1a660..436680902395 100644 --- a/packages/angular/cli/src/utilities/completion.ts +++ b/packages/angular/cli/src/utilities/completion.ts @@ -8,7 +8,7 @@ import { json, logging } from '@angular-devkit/core'; import { execFile } from 'node:child_process'; -import { promises as fs } from 'node:fs'; +import * as fs from 'node:fs/promises'; import * as path from 'node:path'; import { env } from 'node:process'; import { colors } from '../utilities/color'; From 6d6e24adb28dd72c80cb3c6af3addb18bf74b658 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 17 Mar 2025 09:03:30 +0000 Subject: [PATCH 020/160] build: update all non-major dependencies --- package.json | 4 +- packages/angular/build/package.json | 6 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- .../schematics_cli/package.json | 2 +- pnpm-lock.yaml | 380 +++++++++--------- 6 files changed, 198 insertions(+), 198 deletions(-) diff --git a/package.json b/package.json index 1328ec1cebf1..90ad62d7e0d1 100644 --- a/package.json +++ b/package.json @@ -149,13 +149,13 @@ "ora": "5.4.1", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", - "piscina": "4.8.0", + "piscina": "4.9.0", "postcss": "8.5.3", "prettier": "^3.0.0", "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.0.171", - "rollup": "4.35.0", + "rollup": "4.36.0", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index c0f23df438ef..43ca89e1f01d 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -24,7 +24,7 @@ "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", "@babel/plugin-syntax-import-attributes": "7.26.0", - "@inquirer/confirm": "5.1.7", + "@inquirer/confirm": "5.1.8", "@vitejs/plugin-basic-ssl": "2.0.0", "beasties": "0.2.0", "browserslist": "^4.23.0", @@ -36,8 +36,8 @@ "mrmime": "2.0.1", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", - "piscina": "4.8.0", - "rollup": "4.35.0", + "piscina": "4.9.0", + "rollup": "4.36.0", "sass": "1.85.1", "semver": "7.7.1", "source-map-support": "0.5.21", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index cebf38c7dc6a..a5b548b7da34 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -25,7 +25,7 @@ "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.3.3", + "@inquirer/prompts": "7.4.0", "@listr2/prompt-adapter-inquirer": "2.0.18", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index fe4807597918..573444d7c74e 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -43,7 +43,7 @@ "open": "10.1.0", "ora": "5.4.1", "picomatch": "4.0.2", - "piscina": "4.8.0", + "piscina": "4.9.0", "postcss": "8.5.3", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index 9e2f0097b298..480618ddb5ad 100644 --- a/packages/angular_devkit/schematics_cli/package.json +++ b/packages/angular_devkit/schematics_cli/package.json @@ -18,7 +18,7 @@ "dependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.3.3", + "@inquirer/prompts": "7.4.0", "ansi-colors": "4.1.3", "symbol-observable": "4.0.0", "yargs-parser": "21.1.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73704469f371..88df3ee49a4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,16 +94,16 @@ importers: version: 9.22.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.35.0) + version: 5.1.1(rollup@4.36.0) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.3(rollup@4.35.0) + version: 28.0.3(rollup@4.36.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.35.0) + version: 6.1.0(rollup@4.36.0) '@rollup/plugin-node-resolve': specifier: ^13.0.5 - version: 13.3.0(rollup@4.35.0) + version: 13.3.0(rollup@4.36.0) '@stylistic/eslint-plugin': specifier: ^4.0.0 version: 4.2.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) @@ -324,8 +324,8 @@ importers: specifier: 4.0.2 version: 4.0.2 piscina: - specifier: 4.8.0 - version: 4.8.0 + specifier: 4.9.0 + version: 4.9.0 postcss: specifier: 8.5.3 version: 8.5.3 @@ -342,14 +342,14 @@ importers: specifier: 23.0.171 version: 23.0.171(encoding@0.1.13) rollup: - specifier: 4.35.0 - version: 4.35.0 + specifier: 4.36.0 + version: 4.36.0 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@20.17.24)(rollup@4.35.0) + version: 0.6.3(@types/node@20.17.24)(rollup@4.36.0) rxjs: specifier: 7.8.2 version: 7.8.2 @@ -452,8 +452,8 @@ importers: specifier: 7.26.0 version: 7.26.0(@babel/core@7.26.10) '@inquirer/confirm': - specifier: 5.1.7 - version: 5.1.7(@types/node@20.17.24) + specifier: 5.1.8 + version: 5.1.8(@types/node@20.17.24) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) @@ -488,11 +488,11 @@ importers: specifier: 4.0.2 version: 4.0.2 piscina: - specifier: 4.8.0 - version: 4.8.0 + specifier: 4.9.0 + version: 4.9.0 rollup: - specifier: 4.35.0 - version: 4.35.0 + specifier: 4.36.0 + version: 4.36.0 sass: specifier: 1.85.1 version: 1.85.1 @@ -535,11 +535,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/schematics '@inquirer/prompts': - specifier: 7.3.3 - version: 7.3.3(@types/node@20.17.24) + specifier: 7.4.0 + version: 7.4.0(@types/node@20.17.24) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.3.3(@types/node@20.17.24)) + version: 2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.24)) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -768,8 +768,8 @@ importers: specifier: 4.0.2 version: 4.0.2 piscina: - specifier: 4.8.0 - version: 4.8.0 + specifier: 4.9.0 + version: 4.9.0 postcss: specifier: 8.5.3 version: 8.5.3 @@ -903,8 +903,8 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../schematics '@inquirer/prompts': - specifier: 7.3.3 - version: 7.3.3(@types/node@20.17.24) + specifier: 7.4.0 + version: 7.4.0(@types/node@20.17.24) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1872,8 +1872,8 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} - '@inquirer/checkbox@4.1.3': - resolution: {integrity: sha512-KU1MGwf24iABJjGESxhyj+/rlQYSRoCfcuHDEHXfZ1DENmbuSRfyrUb+LLjHoee5TNOFKwaFxDXc5/zRwJUPMQ==} + '@inquirer/checkbox@4.1.4': + resolution: {integrity: sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1881,8 +1881,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.7': - resolution: {integrity: sha512-Xrfbrw9eSiHb+GsesO8TQIeHSMTP0xyvTCeeYevgZ4sKW+iz9w/47bgfG9b0niQm+xaLY2EWPBINUPldLwvYiw==} + '@inquirer/confirm@5.1.8': + resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1890,8 +1890,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.8': - resolution: {integrity: sha512-HpAqR8y715zPpM9e/9Q+N88bnGwqqL8ePgZ0SMv/s3673JLMv3bIkoivGmjPqXlEgisUksSXibweQccUwEx4qQ==} + '@inquirer/core@10.1.9': + resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1899,8 +1899,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.8': - resolution: {integrity: sha512-UkGKbMFlQw5k4ZLjDwEi5z8NIVlP/3DAlLHta0o0pSsdpPThNmPtUL8mvGCHUaQtR+QrxR9yRYNWgKMsHkfIUA==} + '@inquirer/editor@4.2.9': + resolution: {integrity: sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1908,8 +1908,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.10': - resolution: {integrity: sha512-leyBouGJ77ggv51Jb/OJmLGGnU2HYc13MZ2iiPNLwe2VgFgZPVqsrRWSa1RAHKyazjOyvSNKLD1B2K7A/iWi1g==} + '@inquirer/expand@4.0.11': + resolution: {integrity: sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1921,8 +1921,8 @@ packages: resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} - '@inquirer/input@4.1.7': - resolution: {integrity: sha512-rCQAipJNA14UTH84df/z4jDJ9LZ54H6zzuCAi7WZ0qVqx3CSqLjfXAMd5cpISIxbiHVJCPRB81gZksq6CZsqDg==} + '@inquirer/input@4.1.8': + resolution: {integrity: sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1930,8 +1930,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.10': - resolution: {integrity: sha512-GLsdnxzNefjCJUmWyjaAuNklHgDpCTL4RMllAVhVvAzBwRW9g38eZ5tWgzo1lirtSDTpsh593hqXVhxvdrjfwA==} + '@inquirer/number@3.0.11': + resolution: {integrity: sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1939,8 +1939,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.10': - resolution: {integrity: sha512-JC538ujqeYKkFqLoWZ0ILBteIUO2yajBMVEUZSxjl9x6fiEQtM+I5Rca7M2D8edMDbyHLnXifGH1hJZdh8V5rA==} + '@inquirer/password@4.0.11': + resolution: {integrity: sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1948,8 +1948,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.3.3': - resolution: {integrity: sha512-QS1AQgJ113iE/nmym03yKZKHvGjVWwkGZT3B1yKrrMG0bJKQg1jUkntFP8aPd2FUQzu/nga7QU2eDpzIP5it0Q==} + '@inquirer/prompts@7.4.0': + resolution: {integrity: sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1957,8 +1957,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.0.10': - resolution: {integrity: sha512-vOQbQkmhaCsF2bUmjoyRSZJBz77UnIF/F3ZS2LMgwbgyaG2WgwKHh0WKNj0APDB72WDbZijhW5nObQbk+TnbcA==} + '@inquirer/rawlist@4.0.11': + resolution: {integrity: sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1966,8 +1966,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.10': - resolution: {integrity: sha512-EAVKAz6P1LajZOdoL+R+XC3HJYSU261fbJzO4fCkJJ7UPFcm+nP+gzC+DDZWsb2WK9PQvKsnaKiNKsY8B6dBWQ==} + '@inquirer/search@3.0.11': + resolution: {integrity: sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1975,8 +1975,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.0.10': - resolution: {integrity: sha512-Tg8S9nESnCfISu5tCZSuXpXq0wHuDVimj7xyHstABgR34zcJnLdq/VbjB2mdZvNAMAehYBnNzSjxB06UE8LLAA==} + '@inquirer/select@4.1.0': + resolution: {integrity: sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2526,98 +2526,98 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.35.0': - resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} + '@rollup/rollup-android-arm-eabi@4.36.0': + resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.35.0': - resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} + '@rollup/rollup-android-arm64@4.36.0': + resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.35.0': - resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} + '@rollup/rollup-darwin-arm64@4.36.0': + resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.35.0': - resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} + '@rollup/rollup-darwin-x64@4.36.0': + resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.35.0': - resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} + '@rollup/rollup-freebsd-arm64@4.36.0': + resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.35.0': - resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} + '@rollup/rollup-freebsd-x64@4.36.0': + resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.35.0': - resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} + '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.35.0': - resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} + '@rollup/rollup-linux-arm-musleabihf@4.36.0': + resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.35.0': - resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} + '@rollup/rollup-linux-arm64-gnu@4.36.0': + resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.35.0': - resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} + '@rollup/rollup-linux-arm64-musl@4.36.0': + resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.35.0': - resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} + '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': - resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} + '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.35.0': - resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} + '@rollup/rollup-linux-riscv64-gnu@4.36.0': + resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.35.0': - resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} + '@rollup/rollup-linux-s390x-gnu@4.36.0': + resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.35.0': - resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} + '@rollup/rollup-linux-x64-gnu@4.36.0': + resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.35.0': - resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} + '@rollup/rollup-linux-x64-musl@4.36.0': + resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.35.0': - resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} + '@rollup/rollup-win32-arm64-msvc@4.36.0': + resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.35.0': - resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} + '@rollup/rollup-win32-ia32-msvc@4.36.0': + resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.35.0': - resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} + '@rollup/rollup-win32-x64-msvc@4.36.0': + resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} cpu: [x64] os: [win32] @@ -6458,8 +6458,8 @@ packages: resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} hasBin: true - piscina@4.8.0: - resolution: {integrity: sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==} + piscina@4.9.0: + resolution: {integrity: sha512-JCxYZiHa5nlL8fPSJcw0QBUKEgkdxH9Pi7JK2WQ6WQk7UXufbdiaw9AN7wFUGdvvAHFH+lrudfR8nsMlrpnfCQ==} pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} @@ -6842,8 +6842,8 @@ packages: '@types/node': optional: true - rollup@4.35.0: - resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} + rollup@4.36.0: + resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -9117,9 +9117,9 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/checkbox@4.1.3(@types/node@20.17.24)': + '@inquirer/checkbox@4.1.4(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.5(@types/node@20.17.24) ansi-escapes: 4.3.2 @@ -9127,14 +9127,14 @@ snapshots: optionalDependencies: '@types/node': 20.17.24 - '@inquirer/confirm@5.1.7(@types/node@20.17.24)': + '@inquirer/confirm@5.1.8(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/type': 3.0.5(@types/node@20.17.24) optionalDependencies: '@types/node': 20.17.24 - '@inquirer/core@10.1.8(@types/node@20.17.24)': + '@inquirer/core@10.1.9(@types/node@20.17.24)': dependencies: '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.5(@types/node@20.17.24) @@ -9147,17 +9147,17 @@ snapshots: optionalDependencies: '@types/node': 20.17.24 - '@inquirer/editor@4.2.8(@types/node@20.17.24)': + '@inquirer/editor@4.2.9(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/type': 3.0.5(@types/node@20.17.24) external-editor: 3.1.0 optionalDependencies: '@types/node': 20.17.24 - '@inquirer/expand@4.0.10(@types/node@20.17.24)': + '@inquirer/expand@4.0.11(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/type': 3.0.5(@types/node@20.17.24) yoctocolors-cjs: 2.1.2 optionalDependencies: @@ -9165,63 +9165,63 @@ snapshots: '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.7(@types/node@20.17.24)': + '@inquirer/input@4.1.8(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/type': 3.0.5(@types/node@20.17.24) optionalDependencies: '@types/node': 20.17.24 - '@inquirer/number@3.0.10(@types/node@20.17.24)': + '@inquirer/number@3.0.11(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/type': 3.0.5(@types/node@20.17.24) optionalDependencies: '@types/node': 20.17.24 - '@inquirer/password@4.0.10(@types/node@20.17.24)': + '@inquirer/password@4.0.11(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/type': 3.0.5(@types/node@20.17.24) ansi-escapes: 4.3.2 optionalDependencies: '@types/node': 20.17.24 - '@inquirer/prompts@7.3.3(@types/node@20.17.24)': - dependencies: - '@inquirer/checkbox': 4.1.3(@types/node@20.17.24) - '@inquirer/confirm': 5.1.7(@types/node@20.17.24) - '@inquirer/editor': 4.2.8(@types/node@20.17.24) - '@inquirer/expand': 4.0.10(@types/node@20.17.24) - '@inquirer/input': 4.1.7(@types/node@20.17.24) - '@inquirer/number': 3.0.10(@types/node@20.17.24) - '@inquirer/password': 4.0.10(@types/node@20.17.24) - '@inquirer/rawlist': 4.0.10(@types/node@20.17.24) - '@inquirer/search': 3.0.10(@types/node@20.17.24) - '@inquirer/select': 4.0.10(@types/node@20.17.24) + '@inquirer/prompts@7.4.0(@types/node@20.17.24)': + dependencies: + '@inquirer/checkbox': 4.1.4(@types/node@20.17.24) + '@inquirer/confirm': 5.1.8(@types/node@20.17.24) + '@inquirer/editor': 4.2.9(@types/node@20.17.24) + '@inquirer/expand': 4.0.11(@types/node@20.17.24) + '@inquirer/input': 4.1.8(@types/node@20.17.24) + '@inquirer/number': 3.0.11(@types/node@20.17.24) + '@inquirer/password': 4.0.11(@types/node@20.17.24) + '@inquirer/rawlist': 4.0.11(@types/node@20.17.24) + '@inquirer/search': 3.0.11(@types/node@20.17.24) + '@inquirer/select': 4.1.0(@types/node@20.17.24) optionalDependencies: '@types/node': 20.17.24 - '@inquirer/rawlist@4.0.10(@types/node@20.17.24)': + '@inquirer/rawlist@4.0.11(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/type': 3.0.5(@types/node@20.17.24) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 20.17.24 - '@inquirer/search@3.0.10(@types/node@20.17.24)': + '@inquirer/search@3.0.11(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.5(@types/node@20.17.24) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 20.17.24 - '@inquirer/select@4.0.10(@types/node@20.17.24)': + '@inquirer/select@4.1.0(@types/node@20.17.24)': dependencies: - '@inquirer/core': 10.1.8(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.24) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.5(@types/node@20.17.24) ansi-escapes: 4.3.2 @@ -9299,9 +9299,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.3.3(@types/node@20.17.24))': + '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.24))': dependencies: - '@inquirer/prompts': 7.3.3(@types/node@20.17.24) + '@inquirer/prompts': 7.4.0(@types/node@20.17.24) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.2.6': @@ -9656,13 +9656,13 @@ snapshots: - bare-buffer - supports-color - '@rollup/plugin-alias@5.1.1(rollup@4.35.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.36.0)': optionalDependencies: - rollup: 4.35.0 + rollup: 4.36.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.35.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.36.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.36.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.3(picomatch@4.0.2) @@ -9670,104 +9670,104 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.35.0 + rollup: 4.36.0 - '@rollup/plugin-json@6.1.0(rollup@4.35.0)': + '@rollup/plugin-json@6.1.0(rollup@4.36.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.36.0) optionalDependencies: - rollup: 4.35.0 + rollup: 4.36.0 - '@rollup/plugin-node-resolve@13.3.0(rollup@4.35.0)': + '@rollup/plugin-node-resolve@13.3.0(rollup@4.36.0)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.35.0) + '@rollup/pluginutils': 3.1.0(rollup@4.36.0) '@types/resolve': 1.17.1 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.10 - rollup: 4.35.0 + rollup: 4.36.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.35.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.36.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.36.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.35.0 + rollup: 4.36.0 - '@rollup/pluginutils@3.1.0(rollup@4.35.0)': + '@rollup/pluginutils@3.1.0(rollup@4.36.0)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 4.35.0 + rollup: 4.36.0 - '@rollup/pluginutils@5.1.4(rollup@4.35.0)': + '@rollup/pluginutils@5.1.4(rollup@4.36.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.35.0 + rollup: 4.36.0 - '@rollup/rollup-android-arm-eabi@4.35.0': + '@rollup/rollup-android-arm-eabi@4.36.0': optional: true - '@rollup/rollup-android-arm64@4.35.0': + '@rollup/rollup-android-arm64@4.36.0': optional: true - '@rollup/rollup-darwin-arm64@4.35.0': + '@rollup/rollup-darwin-arm64@4.36.0': optional: true - '@rollup/rollup-darwin-x64@4.35.0': + '@rollup/rollup-darwin-x64@4.36.0': optional: true - '@rollup/rollup-freebsd-arm64@4.35.0': + '@rollup/rollup-freebsd-arm64@4.36.0': optional: true - '@rollup/rollup-freebsd-x64@4.35.0': + '@rollup/rollup-freebsd-x64@4.36.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + '@rollup/rollup-linux-arm-gnueabihf@4.36.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.35.0': + '@rollup/rollup-linux-arm-musleabihf@4.36.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.35.0': + '@rollup/rollup-linux-arm64-gnu@4.36.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.35.0': + '@rollup/rollup-linux-arm64-musl@4.36.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + '@rollup/rollup-linux-loongarch64-gnu@4.36.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.35.0': + '@rollup/rollup-linux-riscv64-gnu@4.36.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.35.0': + '@rollup/rollup-linux-s390x-gnu@4.36.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.35.0': + '@rollup/rollup-linux-x64-gnu@4.36.0': optional: true - '@rollup/rollup-linux-x64-musl@4.35.0': + '@rollup/rollup-linux-x64-musl@4.36.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.35.0': + '@rollup/rollup-win32-arm64-msvc@4.36.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.35.0': + '@rollup/rollup-win32-ia32-msvc@4.36.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.35.0': + '@rollup/rollup-win32-x64-msvc@4.36.0': optional: true '@rollup/wasm-node@4.35.0': @@ -10481,11 +10481,11 @@ snapshots: '@web/dev-server-rollup@0.6.4': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.35.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.36.0) '@web/dev-server-core': 0.7.5 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.35.0 + rollup: 4.36.0 whatwg-url: 14.1.1 transitivePeerDependencies: - bufferutil @@ -13814,7 +13814,7 @@ snapshots: ng-packagr@20.0.0-next.1(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: '@angular/compiler-cli': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2) - '@rollup/plugin-json': 6.1.0(rollup@4.35.0) + '@rollup/plugin-json': 6.1.0(rollup@4.36.0) '@rollup/wasm-node': 4.35.0 ajv: 8.17.1 ansi-colors: 4.1.3 @@ -13829,7 +13829,7 @@ snapshots: jsonc-parser: 3.3.1 less: 4.2.2 ora: 5.4.1 - piscina: 4.8.0 + piscina: 4.9.0 postcss: 8.5.3 rxjs: 7.8.2 sass: 1.85.1 @@ -13837,7 +13837,7 @@ snapshots: tslib: 2.8.1 typescript: 5.8.2 optionalDependencies: - rollup: 4.35.0 + rollup: 4.36.0 nice-try@1.0.5: {} @@ -14264,7 +14264,7 @@ snapshots: sonic-boom: 4.2.0 thread-stream: 3.1.0 - piscina@4.8.0: + piscina@4.9.0: optionalDependencies: '@napi-rs/nice': 1.0.1 @@ -14742,37 +14742,37 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.24)(rollup@4.35.0): + rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.24)(rollup@4.36.0): dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.35.0) - rollup: 4.35.0 + '@rollup/pluginutils': 3.1.0(rollup@4.36.0) + rollup: 4.36.0 source-map-resolve: 0.6.0 optionalDependencies: '@types/node': 20.17.24 - rollup@4.35.0: + rollup@4.36.0: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.35.0 - '@rollup/rollup-android-arm64': 4.35.0 - '@rollup/rollup-darwin-arm64': 4.35.0 - '@rollup/rollup-darwin-x64': 4.35.0 - '@rollup/rollup-freebsd-arm64': 4.35.0 - '@rollup/rollup-freebsd-x64': 4.35.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 - '@rollup/rollup-linux-arm-musleabihf': 4.35.0 - '@rollup/rollup-linux-arm64-gnu': 4.35.0 - '@rollup/rollup-linux-arm64-musl': 4.35.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 - '@rollup/rollup-linux-riscv64-gnu': 4.35.0 - '@rollup/rollup-linux-s390x-gnu': 4.35.0 - '@rollup/rollup-linux-x64-gnu': 4.35.0 - '@rollup/rollup-linux-x64-musl': 4.35.0 - '@rollup/rollup-win32-arm64-msvc': 4.35.0 - '@rollup/rollup-win32-ia32-msvc': 4.35.0 - '@rollup/rollup-win32-x64-msvc': 4.35.0 + '@rollup/rollup-android-arm-eabi': 4.36.0 + '@rollup/rollup-android-arm64': 4.36.0 + '@rollup/rollup-darwin-arm64': 4.36.0 + '@rollup/rollup-darwin-x64': 4.36.0 + '@rollup/rollup-freebsd-arm64': 4.36.0 + '@rollup/rollup-freebsd-x64': 4.36.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 + '@rollup/rollup-linux-arm-musleabihf': 4.36.0 + '@rollup/rollup-linux-arm64-gnu': 4.36.0 + '@rollup/rollup-linux-arm64-musl': 4.36.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 + '@rollup/rollup-linux-riscv64-gnu': 4.36.0 + '@rollup/rollup-linux-s390x-gnu': 4.36.0 + '@rollup/rollup-linux-x64-gnu': 4.36.0 + '@rollup/rollup-linux-x64-musl': 4.36.0 + '@rollup/rollup-win32-arm64-msvc': 4.36.0 + '@rollup/rollup-win32-ia32-msvc': 4.36.0 + '@rollup/rollup-win32-x64-msvc': 4.36.0 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -15791,7 +15791,7 @@ snapshots: dependencies: esbuild: 0.25.1 postcss: 8.5.3 - rollup: 4.35.0 + rollup: 4.36.0 optionalDependencies: '@types/node': 20.17.24 fsevents: 2.3.3 From e774476413270b6392d58de8a80af0cb3b9d3496 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 17 Mar 2025 12:04:02 +0000 Subject: [PATCH 021/160] build: lock file maintenance --- pnpm-lock.yaml | 198 ++++++++++++++++++++----------------------------- 1 file changed, 82 insertions(+), 116 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88df3ee49a4a..ef6a68c6473f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -361,7 +361,7 @@ importers: version: 7.7.1 shelljs: specifier: ^0.9.0 - version: 0.9.1 + version: 0.9.2 source-map: specifier: 0.7.4 version: 0.7.4 @@ -1196,11 +1196,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.26.9': - resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} @@ -1584,18 +1579,10 @@ packages: resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.9': - resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.26.10': resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.9': - resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} - engines: {node: '>=6.9.0'} - '@bazel/bazelisk@1.25.0': resolution: {integrity: sha512-IgesSUh9EwwLI9+Vs5rb/sx7vh6cI97CRLPqw9+/egFzeZlB5S2fTsKwbdDxtTVPjQMGS3GY64tTNsgejVFeKg==} hasBin: true @@ -1770,8 +1757,8 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.5.0': - resolution: {integrity: sha512-RoV8Xs9eNwiDvhv7M+xcL4PWyRyIXRY/FLp3buU4h1EYfdF7unWUy3dOjPqb3C7rMUewIcqwW850PgS8h1o1yg==} + '@eslint-community/eslint-utils@4.5.1': + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -1832,16 +1819,16 @@ packages: resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} engines: {node: '>=14.0.0'} - '@google-cloud/promisify@4.0.0': - resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} - engines: {node: '>=14'} + '@google-cloud/promisify@4.1.0': + resolution: {integrity: sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==} + engines: {node: '>=18'} '@google-cloud/spanner@7.19.0': resolution: {integrity: sha512-EQUGFc6l5h4spSbVKtURt+6OY+vFkACkXvdcDFISwB2++VWigeTOE0gFVJMUrko0HaKxOKfWW80+GYZCUToTcA==} engines: {node: '>=14.0.0'} - '@grpc/grpc-js@1.12.6': - resolution: {integrity: sha512-JXUj6PI0oqqzTGvKtzOkxtpsyPRNsrmhh41TtIz/zEB6J+AUiZZ0dxWzcMwO9Ns5rmSPuMdghlTbUuqIM48d3Q==} + '@grpc/grpc-js@1.13.0': + resolution: {integrity: sha512-pMuxInZjUnUkgMT2QLZclRqwk2ykJbIU05aZgPgJYXEpN9+2I7z7aNwcjWZSycRPl232FfhPszyBFJyOxTHNog==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.13': @@ -2621,8 +2608,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/wasm-node@4.35.0': - resolution: {integrity: sha512-mVs1GGfgeDCcMCFN5FystW0B5XjwhARAnomDBm2wTITTAioNr+YrUJ4UPjV33iXiLH1xAKWuUo30Od5HzrfQyA==} + '@rollup/wasm-node@4.36.0': + resolution: {integrity: sha512-qEzDrBzGlkWgtWiP8OJJegVdT+gHYEbHXtkI0vhlDLSzejAzMuhl1MfIQyU6U6XCZrijX9KTSi3UNBwB4en/eQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3377,8 +3364,8 @@ packages: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} engines: {node: '>=0.10.0'} - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.3: @@ -3674,8 +3661,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001703: - resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} + caniuse-lite@1.0.30001705: + resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4225,8 +4212,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.114: - resolution: {integrity: sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==} + electron-to-chromium@1.5.119: + resolution: {integrity: sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -5953,8 +5940,8 @@ packages: nanocolors@0.2.13: resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==} - nanoid@3.3.9: - resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==} + nanoid@3.3.10: + resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -6473,9 +6460,9 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - portfinder@1.0.33: - resolution: {integrity: sha512-+2jndHT63cL5MdQOwDm9OT2dIe11zVpjV+0GGRXdtO1wpPxv260NfVqoEXtYAi/shanmm3W4+yLduIe55ektTw==} - engines: {node: '>= 0.12.0'} + portfinder@1.0.35: + resolution: {integrity: sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==} + engines: {node: '>= 10.12'} portscanner@2.2.0: resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==} @@ -7020,8 +7007,8 @@ packages: resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} engines: {node: '>= 0.4'} - shelljs@0.9.1: - resolution: {integrity: sha512-ngPynK9u9OmsL2DttaTOhEPahyAjVbjIwCK3R+2V9YDq0/equpq7hVz3XrnfIjAk1thN5ET5mEIzAmocmV6i+Q==} + shelljs@0.9.2: + resolution: {integrity: sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==} engines: {node: '>=18'} hasBin: true @@ -7424,8 +7411,8 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + tr46@5.1.0: + resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} engines: {node: '>=18'} tree-dump@1.0.2: @@ -7815,8 +7802,8 @@ packages: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} - whatwg-url@14.1.1: - resolution: {integrity: sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ==} + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} whatwg-url@5.0.0: @@ -8227,7 +8214,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.9 + '@babel/types': 7.26.10 '@babel/helper-compilation-targets@7.26.5': dependencies: @@ -8277,8 +8264,8 @@ snapshots: '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.26.9 - '@babel/types': 7.26.9 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 transitivePeerDependencies: - supports-color @@ -8311,7 +8298,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.26.10 transitivePeerDependencies: - supports-color @@ -8333,7 +8320,7 @@ snapshots: '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.26.9 + '@babel/types': 7.26.10 '@babel/helper-string-parser@7.25.9': {} @@ -8344,8 +8331,8 @@ snapshots: '@babel/helper-wrap-function@7.25.9': dependencies: '@babel/template': 7.26.9 - '@babel/traverse': 7.26.9 - '@babel/types': 7.26.9 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 transitivePeerDependencies: - supports-color @@ -8358,15 +8345,11 @@ snapshots: dependencies: '@babel/types': 7.26.10 - '@babel/parser@7.26.9': - dependencies: - '@babel/types': 7.26.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.26.10 transitivePeerDependencies: - supports-color @@ -8393,7 +8376,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.26.10 transitivePeerDependencies: - supports-color @@ -8427,7 +8410,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.26.10 transitivePeerDependencies: - supports-color @@ -8473,7 +8456,7 @@ snapshots: '@babel/helper-compilation-targets': 7.26.5 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.26.10 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -8534,7 +8517,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-compilation-targets': 7.26.5 '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.26.10 transitivePeerDependencies: - supports-color @@ -8580,7 +8563,7 @@ snapshots: '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.9 + '@babel/traverse': 7.26.10 transitivePeerDependencies: - supports-color @@ -8827,7 +8810,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/types': 7.26.9 + '@babel/types': 7.26.10 esutils: 2.0.3 '@babel/runtime@7.26.10': @@ -8852,28 +8835,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.26.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.9 - '@babel/template': 7.26.9 - '@babel/types': 7.26.9 - debug: 4.4.0(supports-color@10.0.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/types@7.26.10': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.26.9': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@bazel/bazelisk@1.25.0': {} '@bazel/buildifier@8.0.3': {} @@ -8982,7 +8948,7 @@ snapshots: '@esbuild/win32-x64@0.25.1': optional: true - '@eslint-community/eslint-utils@4.5.0(eslint@9.22.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.5.1(eslint@9.22.0(jiti@1.21.7))': dependencies: eslint: 9.22.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 @@ -9035,7 +9001,7 @@ snapshots: '@google-cloud/common@5.0.2(encoding@0.1.13)(supports-color@10.0.0)': dependencies: '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.0.0 + '@google-cloud/promisify': 4.1.0 arrify: 2.0.1 duplexify: 4.1.3 extend: 3.0.2 @@ -9051,14 +9017,14 @@ snapshots: '@google-cloud/projectify@4.0.0': {} - '@google-cloud/promisify@4.0.0': {} + '@google-cloud/promisify@4.1.0': {} '@google-cloud/spanner@7.19.0(encoding@0.1.13)(supports-color@10.0.0)': dependencies: '@google-cloud/common': 5.0.2(encoding@0.1.13)(supports-color@10.0.0) '@google-cloud/precise-date': 4.0.0 '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.0.0 + '@google-cloud/promisify': 4.1.0 '@grpc/proto-loader': 0.7.13 '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) @@ -9090,7 +9056,7 @@ snapshots: - encoding - supports-color - '@grpc/grpc-js@1.12.6': + '@grpc/grpc-js@1.13.0': dependencies: '@grpc/proto-loader': 0.7.13 '@js-sdsl/ordered-map': 4.4.2 @@ -9770,7 +9736,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.36.0': optional: true - '@rollup/wasm-node@4.35.0': + '@rollup/wasm-node@4.36.0': dependencies: '@types/estree': 1.0.6 optionalDependencies: @@ -9851,24 +9817,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.26.9 + '@babel/types': 7.26.10 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.26.9 + '@babel/types': 7.26.10 '@types/big.js@6.2.2': {} @@ -10268,7 +10234,7 @@ snapshots: '@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.26.1 '@typescript-eslint/types': 8.26.1 '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) @@ -10486,7 +10452,7 @@ snapshots: nanocolors: 0.2.13 parse5: 6.0.1 rollup: 4.36.0 - whatwg-url: 14.1.1 + whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil - supports-color @@ -10507,7 +10473,7 @@ snapshots: internal-ip: 6.2.0 nanocolors: 0.2.13 open: 8.4.2 - portfinder: 1.0.33 + portfinder: 1.0.35 transitivePeerDependencies: - bufferutil - supports-color @@ -10564,7 +10530,7 @@ snapshots: istanbul-reports: 3.1.7 log-update: 4.0.0 nanocolors: 0.2.13 - nanoid: 3.3.9 + nanoid: 3.3.10 open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 @@ -10609,7 +10575,7 @@ snapshots: diff: 5.2.0 globby: 11.1.0 nanocolors: 0.2.13 - portfinder: 1.0.33 + portfinder: 1.0.35 source-map: 0.7.4 transitivePeerDependencies: - bare-buffer @@ -10838,9 +10804,10 @@ snapshots: array-uniq@1.0.3: {} - array.prototype.findlastindex@1.2.5: + array.prototype.findlastindex@1.2.6: dependencies: call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 @@ -10912,7 +10879,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001703 + caniuse-lite: 1.0.30001705 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -11134,8 +11101,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001703 - electron-to-chromium: 1.5.114 + caniuse-lite: 1.0.30001705 + electron-to-chromium: 1.5.119 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -11214,7 +11181,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001703: {} + caniuse-lite@1.0.30001705: {} caseless@0.12.0: {} @@ -11772,7 +11739,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.114: {} + electron-to-chromium@1.5.119: {} emoji-regex@10.4.0: {} @@ -12021,7 +11988,7 @@ snapshots: dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 + array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 @@ -12062,7 +12029,7 @@ snapshots: eslint@9.22.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.2 '@eslint/config-helpers': 0.1.0 @@ -12214,7 +12181,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.0(supports-color@10.0.0) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -12573,7 +12540,7 @@ snapshots: google-gax@4.4.1(encoding@0.1.13)(supports-color@10.0.0): dependencies: - '@grpc/grpc-js': 1.12.6 + '@grpc/grpc-js': 1.13.0 '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 @@ -12599,7 +12566,7 @@ snapshots: grpc-gcp@1.0.1(protobufjs@7.4.0): dependencies: - '@grpc/grpc-js': 1.12.6 + '@grpc/grpc-js': 1.13.0 protobufjs: 7.4.0 gtoken@7.1.0(encoding@0.1.13)(supports-color@10.0.0): @@ -13109,7 +13076,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.26.9 + '@babel/parser': 7.26.10 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -13119,7 +13086,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.26.9 + '@babel/parser': 7.26.10 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.1 @@ -13791,7 +13758,7 @@ snapshots: nanocolors@0.2.13: {} - nanoid@3.3.9: {} + nanoid@3.3.10: {} natural-compare@1.4.0: {} @@ -13815,7 +13782,7 @@ snapshots: dependencies: '@angular/compiler-cli': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2) '@rollup/plugin-json': 6.1.0(rollup@4.36.0) - '@rollup/wasm-node': 4.35.0 + '@rollup/wasm-node': 4.36.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.4 @@ -14276,11 +14243,10 @@ snapshots: pluralize@8.0.0: {} - portfinder@1.0.33: + portfinder@1.0.35: dependencies: - async: 2.6.4 - debug: 3.2.7 - mkdirp: 0.5.6 + async: 3.2.6 + debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color @@ -14334,7 +14300,7 @@ snapshots: postcss@8.5.3: dependencies: - nanoid: 3.3.9 + nanoid: 3.3.10 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -14977,7 +14943,7 @@ snapshots: shell-quote@1.8.2: {} - shelljs@0.9.1: + shelljs@0.9.2: dependencies: execa: 1.0.0 fast-glob: 3.3.3 @@ -15486,7 +15452,7 @@ snapshots: tr46@0.0.3: {} - tr46@5.0.0: + tr46@5.1.0: dependencies: punycode: 2.3.1 @@ -15942,9 +15908,9 @@ snapshots: websocket-extensions@0.1.4: {} - whatwg-url@14.1.1: + whatwg-url@14.2.0: dependencies: - tr46: 5.0.0 + tr46: 5.1.0 webidl-conversions: 7.0.0 whatwg-url@5.0.0: From e07491e80e5d2b5350bda9b9bf385a2f33d43e6f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 17 Mar 2025 09:17:50 -0400 Subject: [PATCH 022/160] build: move devkit core specific dependencies out of root With the migration to `rules_js`, package specific dependencies now only need to be referenced with the source `package.json` for each specific package. Most of the `@angular-devkit/core` specific dependencies have now been moved. This is not exhaustive and further changes will continue to move additional dependencies. --- package.json | 5 ---- packages/angular/build/BUILD.bazel | 4 ++-- packages/angular/build/package.json | 1 + packages/angular/cli/BUILD.bazel | 2 +- .../angular_devkit/build_angular/BUILD.bazel | 5 ++-- packages/angular_devkit/core/BUILD.bazel | 19 ++++++++------- packages/angular_devkit/core/node/BUILD.bazel | 2 +- packages/angular_devkit/core/package.json | 3 +++ .../angular_devkit/schematics/BUILD.bazel | 2 +- .../schematics/tools/BUILD.bazel | 2 +- packages/schematics/angular/BUILD.bazel | 4 ++-- pnpm-lock.yaml | 23 ++++++------------- 12 files changed, 30 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index 90ad62d7e0d1..3ab29836476d 100644 --- a/package.json +++ b/package.json @@ -105,13 +105,11 @@ "@typescript-eslint/parser": "8.26.1", "@web/test-runner": "^0.20.0", "ajv": "8.17.1", - "ajv-formats": "3.0.1", "ansi-colors": "4.1.3", "beasties": "0.2.0", "browser-sync": "3.0.3", "browserslist": "^4.21.5", "buffer": "6.0.3", - "chokidar": "4.0.3", "esbuild": "0.25.1", "esbuild-wasm": "0.25.1", "eslint": "9.22.0", @@ -130,7 +128,6 @@ "jasmine-core": "~5.6.0", "jasmine-reporters": "^2.5.2", "jasmine-spec-reporter": "~7.0.0", - "jsonc-parser": "3.3.1", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", @@ -148,7 +145,6 @@ "open": "10.1.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "7.0.0", - "picomatch": "4.0.2", "piscina": "4.9.0", "postcss": "8.5.3", "prettier": "^3.0.0", @@ -162,7 +158,6 @@ "sass": "1.85.1", "semver": "7.7.1", "shelljs": "^0.9.0", - "source-map": "0.7.4", "source-map-support": "0.5.21", "symbol-observable": "4.0.0", "tar": "^7.0.0", diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 98a15eec1458..624e8c31dc35 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -79,6 +79,8 @@ ts_project( ":node_modules/@angular/ssr", ":node_modules/@inquirer/confirm", ":node_modules/@vitejs/plugin-basic-ssl", + ":node_modules/jsonc-parser", + ":node_modules/picomatch", ":node_modules/vite", "//:node_modules/@ampproject/remapping", "//:node_modules/@angular/common", @@ -105,7 +107,6 @@ ts_project( "//:node_modules/esbuild-wasm", "//:node_modules/https-proxy-agent", "//:node_modules/istanbul-lib-instrument", - "//:node_modules/jsonc-parser", "//:node_modules/karma", "//:node_modules/less", "//:node_modules/listr2", @@ -114,7 +115,6 @@ ts_project( "//:node_modules/mrmime", "//:node_modules/ng-packagr", "//:node_modules/parse5-html-rewriting-stream", - "//:node_modules/picomatch", "//:node_modules/piscina", "//:node_modules/postcss", "//:node_modules/rollup", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 43ca89e1f01d..77a5743eaa84 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -31,6 +31,7 @@ "esbuild": "0.25.1", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", "listr2": "8.2.5", "magic-string": "0.30.17", "mrmime": "2.0.1", diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index b12547f0ee12..030b92e1dbec 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -52,6 +52,7 @@ ts_project( ":node_modules/@listr2/prompt-adapter-inquirer", ":node_modules/@yarnpkg/lockfile", ":node_modules/ini", + ":node_modules/jsonc-parser", ":node_modules/npm-package-arg", ":node_modules/npm-pick-manifest", ":node_modules/pacote", @@ -66,7 +67,6 @@ ts_project( "//:node_modules/@types/semver", "//:node_modules/@types/yargs", "//:node_modules/@types/yarnpkg__lockfile", - "//:node_modules/jsonc-parser", "//:node_modules/listr2", "//:node_modules/semver", "//:node_modules/symbol-observable", diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index bd9cae8ef739..55548ff4b108 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -141,11 +141,11 @@ ts_project( ":node_modules/@babel/runtime", ":node_modules/@discoveryjs/json-ext", ":node_modules/@ngtools/webpack", - ":node_modules/@vitejs/plugin-basic-ssl", ":node_modules/autoprefixer", ":node_modules/babel-loader", ":node_modules/copy-webpack-plugin", ":node_modules/css-loader", + ":node_modules/jsonc-parser", ":node_modules/less", ":node_modules/less-loader", ":node_modules/license-webpack-plugin", @@ -183,7 +183,6 @@ ts_project( "//:node_modules/@types/semver", "//:node_modules/@types/watchpack", "//:node_modules/@web/test-runner", - "//:node_modules/ajv", "//:node_modules/ansi-colors", "//:node_modules/browser-sync", "//:node_modules/browserslist", @@ -192,7 +191,6 @@ ts_project( "//:node_modules/fast-glob", "//:node_modules/http-proxy-middleware", "//:node_modules/istanbul-lib-instrument", - "//:node_modules/jsonc-parser", "//:node_modules/karma", "//:node_modules/karma-source-map-support", "//:node_modules/ng-packagr", @@ -365,6 +363,7 @@ LARGE_SPECS = { "//:node_modules/@types/node", "//:node_modules/@angular/animations", "//:node_modules/@angular/material", + "//:node_modules/ajv", ], }, "prerender": {}, diff --git a/packages/angular_devkit/core/BUILD.bazel b/packages/angular_devkit/core/BUILD.bazel index e3f918a57e8c..b83bb47e0b23 100644 --- a/packages/angular_devkit/core/BUILD.bazel +++ b/packages/angular_devkit/core/BUILD.bazel @@ -1,4 +1,5 @@ load("@devinfra//bazel/api-golden:index_rjs.bzl", "api_golden_test_npm_package") +load("@npm2//:defs.bzl", "npm_link_all_packages") load("//tools:defaults2.bzl", "jasmine_test", "npm_package", "ts_project") # Copyright Google Inc. All Rights Reserved. @@ -9,6 +10,8 @@ package(default_visibility = ["//visibility:public"]) licenses(["notice"]) +npm_link_all_packages() + RUNTIME_ASSETS = glob( include = ["**/*.json"], # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces @@ -29,19 +32,15 @@ ts_project( data = RUNTIME_ASSETS, module_name = "@angular-devkit/core", deps = [ + ":node_modules/ajv", + ":node_modules/ajv-formats", + ":node_modules/jsonc-parser", + ":node_modules/picomatch", + ":node_modules/source-map", + "//:node_modules/@types/jasmine", "//:node_modules/@types/node", "//:node_modules/@types/picomatch", - "//:node_modules/@types/jasmine", - "//:node_modules/ajv", - "//:node_modules/ajv-formats", - "//:node_modules/jsonc-parser", - "//:node_modules/picomatch", "//:node_modules/rxjs", - "//:node_modules/source-map", - # @node_module: typescript:es2015.proxy - # @node_module: typescript:es2015.reflect - # @node_module: typescript:es2015.symbol.wellknown - # @typings: source_map ], ) diff --git a/packages/angular_devkit/core/node/BUILD.bazel b/packages/angular_devkit/core/node/BUILD.bazel index 9a6bc4df3ad5..f9247d41161d 100644 --- a/packages/angular_devkit/core/node/BUILD.bazel +++ b/packages/angular_devkit/core/node/BUILD.bazel @@ -21,9 +21,9 @@ ts_project( module_name = "@angular-devkit/core/node", deps = [ "//:node_modules/@types/node", - "//:node_modules/chokidar", "//:node_modules/rxjs", "//packages/angular_devkit/core", + "//packages/angular_devkit/core:node_modules/chokidar", ], ) diff --git a/packages/angular_devkit/core/package.json b/packages/angular_devkit/core/package.json index a852f9459160..ae206660d818 100644 --- a/packages/angular_devkit/core/package.json +++ b/packages/angular_devkit/core/package.json @@ -32,6 +32,9 @@ "rxjs": "7.8.2", "source-map": "0.7.4" }, + "devDependencies": { + "chokidar": "4.0.3" + }, "peerDependencies": { "chokidar": "^4.0.0" }, diff --git a/packages/angular_devkit/schematics/BUILD.bazel b/packages/angular_devkit/schematics/BUILD.bazel index 5ba66ae757a1..43ea9318f7bb 100644 --- a/packages/angular_devkit/schematics/BUILD.bazel +++ b/packages/angular_devkit/schematics/BUILD.bazel @@ -28,8 +28,8 @@ ts_project( module_name = "@angular-devkit/schematics", deps = [ ":node_modules/@angular-devkit/core", + ":node_modules/jsonc-parser", "//:node_modules/@types/node", - "//:node_modules/jsonc-parser", "//:node_modules/magic-string", "//:node_modules/rxjs", ], diff --git a/packages/angular_devkit/schematics/tools/BUILD.bazel b/packages/angular_devkit/schematics/tools/BUILD.bazel index 9ade88d4cbeb..be7d3e946edf 100644 --- a/packages/angular_devkit/schematics/tools/BUILD.bazel +++ b/packages/angular_devkit/schematics/tools/BUILD.bazel @@ -21,10 +21,10 @@ ts_project( module_name = "@angular-devkit/schematics/tools", deps = [ "//:node_modules/@types/node", - "//:node_modules/jsonc-parser", "//:node_modules/rxjs", "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics:node_modules/@angular-devkit/core", + "//packages/angular_devkit/schematics:node_modules/jsonc-parser", "//packages/angular_devkit/schematics/tasks", "//packages/angular_devkit/schematics/tasks/node", ], diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index f2af29f36810..456810e03d66 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -90,9 +90,9 @@ ts_project( deps = [ ":node_modules/@angular-devkit/core", ":node_modules/@angular-devkit/schematics", + ":node_modules/jsonc-parser", "//:node_modules/@types/node", "//:node_modules/browserslist", - "//:node_modules/jsonc-parser", "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript", ], ) @@ -123,9 +123,9 @@ ts_project( ":angular", ":node_modules/@angular-devkit/core", ":node_modules/@angular-devkit/schematics", + ":node_modules/jsonc-parser", "//:node_modules/@types/jasmine", "//:node_modules/@types/node", - "//:node_modules/jsonc-parser", "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript", ], ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef6a68c6473f..e815d7c1df5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -191,9 +191,6 @@ importers: ajv: specifier: 8.17.1 version: 8.17.1 - ajv-formats: - specifier: 3.0.1 - version: 3.0.1(ajv@8.17.1) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -209,9 +206,6 @@ importers: buffer: specifier: 6.0.3 version: 6.0.3 - chokidar: - specifier: 4.0.3 - version: 4.0.3 esbuild: specifier: 0.25.1 version: 0.25.1 @@ -266,9 +260,6 @@ importers: jasmine-spec-reporter: specifier: ~7.0.0 version: 7.0.0 - jsonc-parser: - specifier: 3.3.1 - version: 3.3.1 karma: specifier: ~6.4.0 version: 6.4.4 @@ -320,9 +311,6 @@ importers: parse5-html-rewriting-stream: specifier: 7.0.0 version: 7.0.0 - picomatch: - specifier: 4.0.2 - version: 4.0.2 piscina: specifier: 4.9.0 version: 4.9.0 @@ -362,9 +350,6 @@ importers: shelljs: specifier: ^0.9.0 version: 0.9.2 - source-map: - specifier: 0.7.4 - version: 0.7.4 source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -472,6 +457,9 @@ importers: istanbul-lib-instrument: specifier: 6.0.3 version: 6.0.3 + jsonc-parser: + specifier: 3.3.1 + version: 3.3.1 listr2: specifier: 8.2.5 version: 8.2.5 @@ -875,6 +863,10 @@ importers: source-map: specifier: 0.7.4 version: 0.7.4 + devDependencies: + chokidar: + specifier: 4.0.3 + version: 4.0.3 packages/angular_devkit/schematics: dependencies: @@ -6622,7 +6614,6 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qjobs@1.2.0: From e7ae25a76b0760cf26df7afb2652c263e5f6389d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Mar 2025 10:59:41 -0400 Subject: [PATCH 023/160] refactor(@schematics/angular): remove unneeded initial library service generation The `library` schematic will now longer generate an empty Angular service with the name of the library. Using only the name would generate a file name conflict with the component now that the type suffix is no longer used by default. Additionally, services tend to be specific to a particular behavior and/or functionality and are named as such. A generically named empty service will typically be deleted or renamed. --- .../library/files/src/__entryFile__.ts.template | 1 - packages/schematics/angular/library/index.ts | 6 ------ packages/schematics/angular/library/index_spec.ts | 13 ++----------- 3 files changed, 2 insertions(+), 18 deletions(-) diff --git a/packages/schematics/angular/library/files/src/__entryFile__.ts.template b/packages/schematics/angular/library/files/src/__entryFile__.ts.template index 9a737ecf69f8..1db55ca95e33 100644 --- a/packages/schematics/angular/library/files/src/__entryFile__.ts.template +++ b/packages/schematics/angular/library/files/src/__entryFile__.ts.template @@ -2,6 +2,5 @@ * Public API Surface of <%= dasherize(name) %> */ -export * from './lib/<%= dasherize(name) %>.service'; export * from './lib/<%= dasherize(name) %>';<% if (!standalone) { %> export * from './lib/<%= dasherize(name) %>.module';<% } %> diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index 6bee27bc9ec1..f59c8420619b 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -185,12 +185,6 @@ export default function (options: LibraryOptions): Rule { standalone: options.standalone, project: packageName, }), - schematic('service', { - name: options.name, - flat: true, - path: sourceDir, - project: packageName, - }), (_tree: Tree, context: SchematicContext) => { if (!options.skipPackageJson && !options.skipInstall) { context.addTask(new NodePackageInstallTask()); diff --git a/packages/schematics/angular/library/index_spec.ts b/packages/schematics/angular/library/index_spec.ts index aebc908d3d90..7787571472e5 100644 --- a/packages/schematics/angular/library/index_spec.ts +++ b/packages/schematics/angular/library/index_spec.ts @@ -57,8 +57,6 @@ describe('Library Schematic', () => { '/projects/foo/src/my-index.ts', '/projects/foo/src/lib/foo.spec.ts', '/projects/foo/src/lib/foo.ts', - '/projects/foo/src/lib/foo.service.spec.ts', - '/projects/foo/src/lib/foo.service.ts', ]), ); }); @@ -102,8 +100,6 @@ describe('Library Schematic', () => { '/some/other/directory/bar/src/my-index.ts', '/some/other/directory/bar/src/lib/foo.spec.ts', '/some/other/directory/bar/src/lib/foo.ts', - '/some/other/directory/bar/src/lib/foo.service.spec.ts', - '/some/other/directory/bar/src/lib/foo.service.ts', ]), ); }); @@ -207,10 +203,8 @@ describe('Library Schematic', () => { const project = config.projects.pascalCasedName; expect(project).toBeDefined(); expect(project.root).toEqual('projects/pascal-cased-name'); - const svcContent = tree.readContent( - '/projects/pascal-cased-name/src/lib/pascal-cased-name.service.ts', - ); - expect(svcContent).toMatch(/providedIn: 'root'/); + const svcContent = tree.readContent('/projects/pascal-cased-name/src/lib/pascal-cased-name.ts'); + expect(svcContent).toContain('@Component'); }); describe(`update package.json`, () => { @@ -320,7 +314,6 @@ describe('Library Schematic', () => { const pkgJsonPath = '/projects/myscope/mylib/package.json'; expect(tree.files).toContain(pkgJsonPath); - expect(tree.files).toContain('/projects/myscope/mylib/src/lib/mylib.service.ts'); expect(tree.files).toContain('/projects/myscope/mylib/src/lib/mylib.ts'); const pkgJson = JSON.parse(tree.readContent(pkgJsonPath)); @@ -431,8 +424,6 @@ describe('Library Schematic', () => { '/projects/foo/src/lib/foo.module.ts', '/projects/foo/src/lib/foo.spec.ts', '/projects/foo/src/lib/foo.ts', - '/projects/foo/src/lib/foo.service.spec.ts', - '/projects/foo/src/lib/foo.service.ts', ]), ); }); From bc0f07b484300848ee81c5719c58909b40f99deb Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 17 Mar 2025 14:13:48 -0400 Subject: [PATCH 024/160] fix(@schematics/angular): generate services without a .service extension/type To align with the updated style guide, Angular v20 will generate services without a `.service` file extension type for all service related files by default. Projects will automatically use this naming convention. Projects can however opt-out by setting the `type` option to `Service` for the service schematic. This can be done as a default in the `angular.json` or directly on the commandline via `--type=Service` when executing `ng generate`. As an example, `example.service.ts` will now be named `example.ts`. Additionally, the TypeScript class name will be `Example` instead of the previous `ExampleService`. --- ...rize__.__type@dasherize__.spec.ts.template | 16 ++++++++++ ...asherize__.__type@dasherize__.ts.template} | 2 +- ..._name@dasherize__.service.spec.ts.template | 16 ---------- packages/schematics/angular/service/index.ts | 3 ++ .../schematics/angular/service/index_spec.ts | 30 +++++++++++++++---- .../schematics/angular/service/schema.json | 4 +++ .../angular/utility/generate-from-files.ts | 13 ++++++++ .../e2e/tests/build/library/setup.ts | 5 ++-- .../tests/generate/service/service-basic.ts | 4 +-- .../e2e/tests/misc/es2015-nometa.ts | 4 +-- 10 files changed, 67 insertions(+), 30 deletions(-) create mode 100644 packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template rename packages/schematics/angular/service/files/__name@dasherize@if-flat__/{__name@dasherize__.service.ts.template => __name@dasherize__.__type@dasherize__.ts.template} (64%) delete mode 100644 packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.service.spec.ts.template diff --git a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template b/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template new file mode 100644 index 000000000000..a57a4e043b4b --- /dev/null +++ b/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { <%= classify(name) %><%= classify(type) %> } from './<%= dasherize(name) %><%= type ? '.' + dasherize(type) : '' %>'; + +describe('<%= classify(name) %><%= classify(type) %>', () => { + let service: <%= classify(name) %><%= classify(type) %>; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(<%= classify(name) %><%= classify(type) %>); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.service.ts.template b/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template similarity index 64% rename from packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.service.ts.template rename to packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template index f14985e32b60..ad3685368077 100644 --- a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.service.ts.template +++ b/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template @@ -3,7 +3,7 @@ import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) -export class <%= classify(name) %>Service { +export class <%= classify(name) %><%= classify(type) %> { constructor() { } } diff --git a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.service.spec.ts.template b/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.service.spec.ts.template deleted file mode 100644 index 2c7ab1d2bdf6..000000000000 --- a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.service.spec.ts.template +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { <%= classify(name) %>Service } from './<%= dasherize(name) %>.service'; - -describe('<%= classify(name) %>Service', () => { - let service: <%= classify(name) %>Service; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(<%= classify(name) %>Service); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/packages/schematics/angular/service/index.ts b/packages/schematics/angular/service/index.ts index 79073504978a..f832af457822 100644 --- a/packages/schematics/angular/service/index.ts +++ b/packages/schematics/angular/service/index.ts @@ -15,6 +15,9 @@ export default function (options: ServiceOptions): Rule { const flat = options.flat; options.flat = true; + // Schematic templates require a defined type value + options.type ??= ''; + return generateFromFiles(options, { 'if-flat': (s: string) => (flat ? '' : s), }); diff --git a/packages/schematics/angular/service/index_spec.ts b/packages/schematics/angular/service/index_spec.ts index 30e9745348dc..b5a6856e1504 100644 --- a/packages/schematics/angular/service/index_spec.ts +++ b/packages/schematics/angular/service/index_spec.ts @@ -46,15 +46,15 @@ describe('Service Schematic', () => { const tree = await schematicRunner.runSchematic('service', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.service.spec.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo.service.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo.ts'); }); it('service should be tree-shakeable', async () => { const options = { ...defaultOptions }; const tree = await schematicRunner.runSchematic('service', options, appTree); - const content = tree.readContent('/projects/bar/src/app/foo/foo.service.ts'); + const content = tree.readContent('/projects/bar/src/app/foo/foo.ts'); expect(content).toMatch(/providedIn: 'root'/); }); @@ -63,8 +63,8 @@ describe('Service Schematic', () => { const tree = await schematicRunner.runSchematic('service', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.service.ts'); - expect(files).not.toContain('/projects/bar/src/app/foo/foo.service.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo.ts'); + expect(files).not.toContain('/projects/bar/src/app/foo/foo.spec.ts'); }); it('should respect the sourceRoot value', async () => { @@ -72,6 +72,24 @@ describe('Service Schematic', () => { config.projects.bar.sourceRoot = 'projects/bar/custom'; appTree.overwrite('/angular.json', JSON.stringify(config, null, 2)); appTree = await schematicRunner.runSchematic('service', defaultOptions, appTree); - expect(appTree.files).toContain('/projects/bar/custom/app/foo/foo.service.ts'); + expect(appTree.files).toContain('/projects/bar/custom/app/foo/foo.ts'); + }); + + it('should respect the type option', async () => { + const options = { ...defaultOptions, type: 'Service' }; + const tree = await schematicRunner.runSchematic('service', options, appTree); + const content = tree.readContent('/projects/bar/src/app/foo/foo.service.ts'); + const testContent = tree.readContent('/projects/bar/src/app/foo/foo.service.spec.ts'); + expect(content).toContain('export class FooService'); + expect(testContent).toContain("describe('FooService'"); + }); + + it('should allow empty string in the type option', async () => { + const options = { ...defaultOptions, type: '' }; + const tree = await schematicRunner.runSchematic('service', options, appTree); + const content = tree.readContent('/projects/bar/src/app/foo/foo.ts'); + const testContent = tree.readContent('/projects/bar/src/app/foo/foo.spec.ts'); + expect(content).toContain('export class Foo'); + expect(testContent).toContain("describe('Foo'"); }); }); diff --git a/packages/schematics/angular/service/schema.json b/packages/schematics/angular/service/schema.json index d5a4d0418acd..29f5474e68dd 100644 --- a/packages/schematics/angular/service/schema.json +++ b/packages/schematics/angular/service/schema.json @@ -39,6 +39,10 @@ "type": "boolean", "description": "Skip the generation of a unit test file `spec.ts` for the service.", "default": false + }, + "type": { + "type": "string", + "description": "Append a custom type to the service's filename. For example, if you set the type to `service`, the file will be named `my-service.service.ts`." } }, "required": ["name", "project"] diff --git a/packages/schematics/angular/utility/generate-from-files.ts b/packages/schematics/angular/utility/generate-from-files.ts index 7cb1317e3771..98dd04ec4158 100644 --- a/packages/schematics/angular/utility/generate-from-files.ts +++ b/packages/schematics/angular/utility/generate-from-files.ts @@ -7,12 +7,14 @@ */ import { + FileOperator, Rule, Tree, apply, applyTemplates, chain, filter, + forEach, mergeWith, move, noop, @@ -31,6 +33,7 @@ export interface GenerateFromFilesOptions { project: string; skipTests?: boolean; templateFilesDirectory?: string; + type?: string; } export function generateFromFiles( @@ -56,6 +59,16 @@ export function generateFromFiles( ...options, ...extraTemplateValues, }), + !options.type + ? forEach(((file) => { + return file.path.includes('..') + ? { + content: file.content, + path: file.path.replace('..', '.'), + } + : file; + }) as FileOperator) + : noop(), move(parsedPath.path + (options.flat ? '' : '/' + strings.dasherize(options.name))), ]); diff --git a/tests/legacy-cli/e2e/tests/build/library/setup.ts b/tests/legacy-cli/e2e/tests/build/library/setup.ts index d47fcae5a754..13b658f345ba 100644 --- a/tests/legacy-cli/e2e/tests/build/library/setup.ts +++ b/tests/legacy-cli/e2e/tests/build/library/setup.ts @@ -17,7 +17,7 @@ export async function libraryConsumptionSetup(): Promise { export class MyLibComponent {}`, './src/app/app.ts': ` import { Component } from '@angular/core'; - import { MyLibService, MyLibComponent } from 'my-lib'; + import { MyLibComponent } from 'my-lib'; @Component({ standalone: true, @@ -28,8 +28,7 @@ export async function libraryConsumptionSetup(): Promise { export class App { title = 'test-project'; - constructor(myLibService: MyLibService) { - console.log(myLibService); + constructor() { } } `, diff --git a/tests/legacy-cli/e2e/tests/generate/service/service-basic.ts b/tests/legacy-cli/e2e/tests/generate/service/service-basic.ts index 26a18fc8a9d2..a7ddb3cb8310 100644 --- a/tests/legacy-cli/e2e/tests/generate/service/service-basic.ts +++ b/tests/legacy-cli/e2e/tests/generate/service/service-basic.ts @@ -9,8 +9,8 @@ export default function () { return ( ng('generate', 'service', 'test-service') .then(() => expectFileToExist(serviceDir)) - .then(() => expectFileToExist(join(serviceDir, 'test-service.service.ts'))) - .then(() => expectFileToExist(join(serviceDir, 'test-service.service.spec.ts'))) + .then(() => expectFileToExist(join(serviceDir, 'test-service.ts'))) + .then(() => expectFileToExist(join(serviceDir, 'test-service.spec.ts'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) diff --git a/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts b/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts index 463a3b971119..c8fad0e07954 100644 --- a/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts +++ b/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts @@ -2,10 +2,10 @@ import { prependToFile, replaceInFile } from '../../utils/fs'; import { ng } from '../../utils/process'; export default async function () { - await ng('generate', 'service', 'user'); + await ng('generate', 'service', 'user-service'); // Update the application to use the new service - await prependToFile('src/app/app.ts', "import { UserService } from './user.service';"); + await prependToFile('src/app/app.ts', "import { UserService } from './user-service';"); await replaceInFile( 'src/app/app.ts', From fe69a9b23aa4364774a8c38027fdb9149d8e1659 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 18 Mar 2025 12:41:11 +0000 Subject: [PATCH 025/160] build: improve debugging mode of e2e test runner Currently the `while` loop may either be causing the process to be really stuck/hanging, or it somehow causes Node to exit. This change makes the logic more robust and less CPU consuming. --- tests/legacy-cli/e2e_runner.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/legacy-cli/e2e_runner.ts b/tests/legacy-cli/e2e_runner.ts index 01f5a6683c27..21377c015845 100644 --- a/tests/legacy-cli/e2e_runner.ts +++ b/tests/legacy-cli/e2e_runner.ts @@ -257,10 +257,8 @@ Promise.all([findFreePort(), findFreePort(), findPackageTars()]) console.log(`Current Directory: ${process.cwd()}`); console.log('Will loop forever while you debug... CTRL-C to quit.'); - /* eslint-disable no-constant-condition */ - while (1) { - // That's right! - } + // Wait forever until user explicitly cancels. + await new Promise(() => {}); } process.exitCode = 1; From 33b9de3eb1fa596a4d5a975d05275739f2f7b8ae Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:47:03 +0000 Subject: [PATCH 026/160] feat(@angular/ssr): expose `provideServerRendering` and remove `provideServerRouting` This commit introduces `provideServerRendering` as the primary function for configuring server-side rendering, replacing `provideServerRouting`. `provideServerRendering` now includes the functionality of `provideServerRouting` through the use of the `withRoutes` feature. This change consolidates server-side rendering configuration into a single, more flexible function, aligning with the evolution of Angular SSR. **Before:** ```ts import { provideServerRouting } from '@angular/ssr'; import { serverRoutes } from './app.routes'; provideServerRouting(serverRoutes); ``` **After:** ```ts import { provideServerRendering, withRoutes } from '@angular/ssr'; import { serverRoutes } from './app.routes'; provideServerRendering(withRoutes(serverRoutes)); ``` --- goldens/public-api/angular/ssr/index.api.md | 7 +- packages/angular/ssr/public_api.ts | 3 +- .../angular/ssr/src/routes/route-config.ts | 199 +++++++++++++----- packages/angular/ssr/test/BUILD.bazel | 1 - .../ssr/test/npm_package/package_spec.ts | 6 - packages/angular/ssr/test/testing-utils.ts | 6 +- .../schematics/angular/app-shell/index.ts | 4 +- .../angular/app-shell/index_spec.ts | 4 +- .../app/app.module.server.ts.template | 7 +- .../app/app.config.server.ts.template | 6 +- .../app/app.config.server.ts.template | 2 +- 11 files changed, 171 insertions(+), 74 deletions(-) diff --git a/goldens/public-api/angular/ssr/index.api.md b/goldens/public-api/angular/ssr/index.api.md index f6a0d089b4b4..81764fcc1f62 100644 --- a/goldens/public-api/angular/ssr/index.api.md +++ b/goldens/public-api/angular/ssr/index.api.md @@ -27,7 +27,7 @@ export enum PrerenderFallback { } // @public -export function provideServerRouting(routes: ServerRoute[], ...features: ServerRoutesFeature[]): EnvironmentProviders; +export function provideServerRendering(...features: ServerRenderingFeature[]): EnvironmentProviders; // @public export enum RenderMode { @@ -72,7 +72,10 @@ export interface ServerRouteServer extends ServerRouteCommon { } // @public -export function withAppShell(component: Type | (() => Promise | DefaultExport>>)): ServerRoutesFeature; +export function withAppShell(component: Type | (() => Promise | DefaultExport>>)): ServerRenderingFeature; + +// @public +export function withRoutes(routes: ServerRoute[]): ServerRenderingFeature; // (No @packageDocumentation comment for this package) diff --git a/packages/angular/ssr/public_api.ts b/packages/angular/ssr/public_api.ts index fbeadeac929f..e685f4ceabe3 100644 --- a/packages/angular/ssr/public_api.ts +++ b/packages/angular/ssr/public_api.ts @@ -14,8 +14,9 @@ export { createRequestHandler, type RequestHandlerFunction } from './src/handler export { PrerenderFallback, type ServerRoute, - provideServerRouting, + provideServerRendering, withAppShell, + withRoutes, RenderMode, type ServerRouteClient, type ServerRoutePrerender, diff --git a/packages/angular/ssr/src/routes/route-config.ts b/packages/angular/ssr/src/routes/route-config.ts index d0a2306134c6..c07c9d76081e 100644 --- a/packages/angular/ssr/src/routes/route-config.ts +++ b/packages/angular/ssr/src/routes/route-config.ts @@ -11,8 +11,11 @@ import { InjectionToken, Provider, Type, + inject, makeEnvironmentProviders, + provideEnvironmentInitializer, } from '@angular/core'; +import { provideServerRendering as provideServerRenderingPlatformServer } from '@angular/platform-server'; import { type DefaultExport, ROUTES, type Route } from '@angular/router'; /** @@ -22,25 +25,26 @@ import { type DefaultExport, ROUTES, type Route } from '@angular/router'; const APP_SHELL_ROUTE = 'ng-app-shell'; /** - * Identifies a particular kind of `ServerRoutesFeatureKind`. - * @see {@link ServerRoutesFeature} + * Identifies a particular kind of `ServerRenderingFeatureKind`. + * @see {@link ServerRenderingFeature} */ -enum ServerRoutesFeatureKind { +enum ServerRenderingFeatureKind { AppShell, + ServerRoutes, } /** * Helper type to represent a server routes feature. - * @see {@link ServerRoutesFeatureKind} + * @see {@link ServerRenderingFeatureKind} */ -interface ServerRoutesFeature { +interface ServerRenderingFeature { ɵkind: FeatureKind; - ɵproviders: Provider[]; + ɵproviders: (Provider | EnvironmentProviders)[]; } /** * Different rendering modes for server routes. - * @see {@link provideServerRouting} + * @see {@link withRoutes} * @see {@link ServerRoute} */ export enum RenderMode { @@ -171,7 +175,7 @@ export interface ServerRouteServer extends ServerRouteCommon { /** * Server route configuration. - * @see {@link provideServerRouting} + * @see {@link withRoutes} */ export type ServerRoute = | ServerRouteClient @@ -200,62 +204,103 @@ export interface ServerRoutesConfig { export const SERVER_ROUTES_CONFIG = new InjectionToken('SERVER_ROUTES_CONFIG'); /** - * Sets up the necessary providers for configuring server routes. - * This function accepts an array of server routes and optional configuration - * options, returning an `EnvironmentProviders` object that encapsulates - * the server routes and configuration settings. + * Configures server-side routing for the application. * - * @param routes - An array of server routes to be provided. - * @param features - (Optional) server routes features. - * @returns An `EnvironmentProviders` instance with the server routes configuration. + * This function registers an array of `ServerRoute` definitions, enabling server-side rendering + * for specific URL paths. These routes are used to pre-render content on the server, improving + * initial load performance and SEO. * + * @param routes - An array of `ServerRoute` objects, each defining a server-rendered route. + * @returns A `ServerRenderingFeature` object configuring server-side routes. + * + * @example + * ```ts + * import { provideServerRendering, withRoutes, ServerRoute, RenderMode } from '@angular/ssr'; + * + * const serverRoutes: ServerRoute[] = [ + * { + * route: '', // This renders the "/" route on the client (CSR) + * renderMode: RenderMode.Client, + * }, + * { + * route: 'about', // This page is static, so we prerender it (SSG) + * renderMode: RenderMode.Prerender, + * }, + * { + * route: 'profile', // This page requires user-specific data, so we use SSR + * renderMode: RenderMode.Server, + * }, + * { + * route: '**', // All other routes will be rendered on the server (SSR) + * renderMode: RenderMode.Server, + * }, + * ]; + * + * provideServerRendering(withRoutes(serverRoutes)); + * ``` + * + * @see {@link provideServerRendering} * @see {@link ServerRoute} - * @see {@link withAppShell} */ -export function provideServerRouting( +export function withRoutes( routes: ServerRoute[], - ...features: ServerRoutesFeature[] -): EnvironmentProviders { +): ServerRenderingFeature { const config: ServerRoutesConfig = { routes }; - const hasAppShell = features.some((f) => f.ɵkind === ServerRoutesFeatureKind.AppShell); - if (hasAppShell) { - config.appShellRoute = APP_SHELL_ROUTE; - } - - const providers: Provider[] = [ - { - provide: SERVER_ROUTES_CONFIG, - useValue: config, - }, - ]; - - for (const feature of features) { - providers.push(...feature.ɵproviders); - } - return makeEnvironmentProviders(providers); + return { + ɵkind: ServerRenderingFeatureKind.ServerRoutes, + ɵproviders: [ + { + provide: SERVER_ROUTES_CONFIG, + useValue: config, + }, + ], + }; } /** - * Configures the app shell route with the provided component. + * Configures the shell of the application. + * + * The app shell is a minimal, static HTML page that is served immediately, while the + * full Angular application loads in the background. This improves perceived performance + * by providing instant feedback to the user. + * + * This function configures the app shell route, which serves the provided component for + * requests that do not match any defined server routes. * - * The app shell serves as the main entry point for the application and is commonly used - * to enable server-side rendering (SSR) of the application shell. It handles requests - * that do not match any specific server route, providing a fallback mechanism and improving - * perceived performance during navigation. + * @param component - The Angular component to render for the app shell. Can be a direct + * component type or a dynamic import function. + * @returns A `ServerRenderingFeature` object configuring the app shell. * - * This configuration is particularly useful in applications leveraging Progressive Web App (PWA) - * patterns, such as service workers, to deliver a seamless user experience. + * @example + * ```ts + * import { provideServerRendering, withAppShell, withRoutes } from '@angular/ssr'; + * import { AppShellComponent } from './app-shell.component'; * - * @param component The Angular component to render for the app shell route. - * @returns A server routes feature configuration for the app shell. + * provideServerRendering( + * withRoutes(serverRoutes), + * withAppShell(AppShellComponent) + * ); + * ``` * - * @see {@link provideServerRouting} + * @example + * ```ts + * import { provideServerRendering, withAppShell, withRoutes } from '@angular/ssr'; + * + * provideServerRendering( + * withRoutes(serverRoutes), + * withAppShell(() => + * import('./app-shell.component').then((m) => m.AppShellComponent) + * ) + * ); + * ``` + * + * @see {@link provideServerRendering} * @see {@link https://angular.dev/ecosystem/service-workers/app-shell | App shell pattern on Angular.dev} */ export function withAppShell( component: Type | (() => Promise | DefaultExport>>), -): ServerRoutesFeature { +): ServerRenderingFeature { const routeConfig: Route = { path: APP_SHELL_ROUTE, }; @@ -267,13 +312,73 @@ export function withAppShell( } return { - ɵkind: ServerRoutesFeatureKind.AppShell, + ɵkind: ServerRenderingFeatureKind.AppShell, ɵproviders: [ { provide: ROUTES, useValue: routeConfig, multi: true, }, + provideEnvironmentInitializer(() => { + const config = inject(SERVER_ROUTES_CONFIG); + config.appShellRoute = APP_SHELL_ROUTE; + }), ], }; } + +/** + * Configures server-side rendering for an Angular application. + * + * This function sets up the necessary providers for server-side rendering, including + * support for server routes and app shell. It combines features configured using + * `withRoutes` and `withAppShell` to provide a comprehensive server-side rendering setup. + * + * @param features - Optional features to configure additional server rendering behaviors. + * @returns An `EnvironmentProviders` instance with the server-side rendering configuration. + * + * @example + * Basic example of how you can enable server-side rendering in your application + * when using the `bootstrapApplication` function: + * + * ```ts + * import { bootstrapApplication } from '@angular/platform-browser'; + * import { provideServerRendering, withRoutes, withAppShell } from '@angular/ssr'; + * import { AppComponent } from './app/app.component'; + * import { SERVER_ROUTES } from './app/app.server.routes'; + * import { AppShellComponent } from './app/app-shell.component'; + * + * bootstrapApplication(AppComponent, { + * providers: [ + * provideServerRendering( + * withRoutes(SERVER_ROUTES), + * withAppShell(AppShellComponent) + * ) + * ] + * }); + * ``` + * @see {@link withRoutes} configures server-side routing + * @see {@link withAppShell} configures the application shell + */ +export function provideServerRendering( + ...features: ServerRenderingFeature[] +): EnvironmentProviders { + let hasAppShell = false; + let hasServerRoutes = false; + const providers: (Provider | EnvironmentProviders)[] = [provideServerRenderingPlatformServer()]; + + for (const { ɵkind, ɵproviders } of features) { + hasAppShell ||= ɵkind === ServerRenderingFeatureKind.AppShell; + hasServerRoutes ||= ɵkind === ServerRenderingFeatureKind.ServerRoutes; + providers.push(...ɵproviders); + } + + if (!hasServerRoutes && hasAppShell) { + throw new Error( + `Configuration error: found 'withAppShell()' without 'withRoutes()' in the same call to 'provideServerRendering()'.` + + `The 'withAppShell()' function requires 'withRoutes()' to be used.`, + ); + } + + return makeEnvironmentProviders(providers); +} diff --git a/packages/angular/ssr/test/BUILD.bazel b/packages/angular/ssr/test/BUILD.bazel index 8fad8bd45ca9..96905391055f 100644 --- a/packages/angular/ssr/test/BUILD.bazel +++ b/packages/angular/ssr/test/BUILD.bazel @@ -13,7 +13,6 @@ ts_project( "//:node_modules/@angular/compiler", "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", - "//:node_modules/@angular/platform-server", "//:node_modules/@angular/router", "//:node_modules/@types/node", "//packages/angular/ssr", diff --git a/packages/angular/ssr/test/npm_package/package_spec.ts b/packages/angular/ssr/test/npm_package/package_spec.ts index 2bd37aeabf5b..c519c53f7b92 100644 --- a/packages/angular/ssr/test/npm_package/package_spec.ts +++ b/packages/angular/ssr/test/npm_package/package_spec.ts @@ -24,12 +24,6 @@ const CRITTERS_ACTUAL_LICENSE_FILE_PATH = join( 'third_party/beasties/THIRD_PARTY_LICENSES.txt', ); -/** - * Path to the golden reference license file for the Beasties library. - * This file is used as a reference for comparison and is located in the same directory as this script. - */ -const CRITTERS_GOLDEN_LICENSE_FILE_PATH = join(__dirname, 'THIRD_PARTY_LICENSES.txt.golden'); - describe('NPM Package Tests', () => { it('should not include the contents of third_party/beasties/index.js in the FESM bundle', async () => { const fesmFilePath = join(ANGULAR_SSR_PACKAGE_PATH, 'fesm2022/ssr.mjs'); diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index b6d01398d7cc..92521972ac58 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -14,11 +14,10 @@ import { provideExperimentalZonelessChangeDetection, } from '@angular/core'; import { bootstrapApplication } from '@angular/platform-browser'; -import { provideServerRendering } from '@angular/platform-server'; import { RouterOutlet, Routes, provideRouter } from '@angular/router'; import { destroyAngularServerApp } from '../src/app'; import { ServerAsset, setAngularAppManifest } from '../src/manifest'; -import { ServerRoute, provideServerRouting } from '../src/routes/route-config'; +import { ServerRoute, provideServerRendering, withRoutes } from '../src/routes/route-config'; @Component({ standalone: true, @@ -94,10 +93,9 @@ export function setAngularAppTestingManifest( bootstrap: async () => () => { return bootstrapApplication(rootComponent, { providers: [ - provideServerRendering(), provideExperimentalZonelessChangeDetection(), provideRouter(routes), - provideServerRouting(serverRoutes), + provideServerRendering(withRoutes(serverRoutes)), ...extraProviders, ], }); diff --git a/packages/schematics/angular/app-shell/index.ts b/packages/schematics/angular/app-shell/index.ts index 683ab4baba1c..66e188c4e45d 100644 --- a/packages/schematics/angular/app-shell/index.ts +++ b/packages/schematics/angular/app-shell/index.ts @@ -300,12 +300,12 @@ function addServerRoutingConfig(options: AppShellOptions, isStandalone: boolean) /** max */ undefined, /** recursive */ true, ).find( - (n) => ts.isIdentifier(n.expression) && n.expression.getText() === 'provideServerRouting', + (n) => ts.isIdentifier(n.expression) && n.expression.getText() === 'provideServerRendering', ); if (!functionCall) { throw new SchematicsException( - `Cannot find the "provideServerRouting" function call in "${configFilePath}".`, + `Cannot find the "provideServerRendering" function call in "${configFilePath}".`, ); } diff --git a/packages/schematics/angular/app-shell/index_spec.ts b/packages/schematics/angular/app-shell/index_spec.ts index bc110813a0be..9a33353a71e5 100644 --- a/packages/schematics/angular/app-shell/index_spec.ts +++ b/packages/schematics/angular/app-shell/index_spec.ts @@ -123,11 +123,11 @@ describe('App Shell Schematic', () => { expect(content).toMatch(/app-shell/); }); - it(`should update the 'provideServerRouting' call to include 'withAppShell'`, async () => { + it(`should update the 'provideServerRendering' call to include 'withAppShell'`, async () => { const tree = await schematicRunner.runSchematic('app-shell', defaultOptions, appTree); const content = tree.readContent('/projects/bar/src/app/app.config.server.ts'); expect(tags.oneLine`${content}`).toContain( - tags.oneLine`provideServerRouting(serverRoutes, withAppShell(AppShell))`, + tags.oneLine`provideServerRendering(withRoutes(serverRoutes), withAppShell(AppShell))`, ); }); diff --git a/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template b/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template index 4fde3bf38675..bd711d72954a 100644 --- a/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template @@ -1,13 +1,12 @@ import { NgModule } from '@angular/core'; -import { ServerModule } from '@angular/platform-server'; -import { provideServerRouting } from '@angular/ssr'; +import { provideServerRendering, withRoutes } from '@angular/ssr'; import { App } from './app'; import { AppModule } from './app.module'; import { serverRoutes } from './app.routes.server'; @NgModule({ - imports: [AppModule, ServerModule], - providers: [provideServerRouting(serverRoutes)], + imports: [AppModule], + providers: [provideServerRendering(withRoutes(serverRoutes))], bootstrap: [App], }) export class AppServerModule {} diff --git a/packages/schematics/angular/server/files/application-builder/standalone-src/app/app.config.server.ts.template b/packages/schematics/angular/server/files/application-builder/standalone-src/app/app.config.server.ts.template index 012518913eed..41031f1165dd 100644 --- a/packages/schematics/angular/server/files/application-builder/standalone-src/app/app.config.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/standalone-src/app/app.config.server.ts.template @@ -1,13 +1,11 @@ import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; -import { provideServerRendering } from '@angular/platform-server'; -import { provideServerRouting } from '@angular/ssr'; +import { provideServerRendering, withRoutes } from '@angular/ssr'; import { appConfig } from './app.config'; import { serverRoutes } from './app.routes.server'; const serverConfig: ApplicationConfig = { providers: [ - provideServerRendering(), - provideServerRouting(serverRoutes) + provideServerRendering(withRoutes(serverRoutes)) ] }; diff --git a/packages/schematics/angular/server/files/server-builder/standalone-src/app/app.config.server.ts.template b/packages/schematics/angular/server/files/server-builder/standalone-src/app/app.config.server.ts.template index b4d57c94235f..05c29319d5c4 100644 --- a/packages/schematics/angular/server/files/server-builder/standalone-src/app/app.config.server.ts.template +++ b/packages/schematics/angular/server/files/server-builder/standalone-src/app/app.config.server.ts.template @@ -1,5 +1,5 @@ import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; -import { provideServerRendering } from '@angular/platform-server'; +import { provideServerRendering } from '@angular/ssr'; import { appConfig } from './app.config'; const serverConfig: ApplicationConfig = { From 26fd4ea73ad2a0148ae587d582134c68a0bf4b86 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:51:26 +0000 Subject: [PATCH 027/160] feat(@schematics/angular): add migrations for server rendering updates - Migrate imports of `provideServerRendering` from `@angular/platform-server` to `@angular/ssr`. - Update `provideServerRendering` to use `withRoutes` and remove `provideServerRouting` from `@angular/ssr`. --- .../migrations/migration-collection.json | 10 ++ .../migration.ts | 110 +++++++++++++++++ .../migration_spec.ts | 75 ++++++++++++ .../migration.ts | 114 ++++++++++++++++++ .../migration_spec.ts | 89 ++++++++++++++ 5 files changed, 398 insertions(+) create mode 100644 packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration.ts create mode 100644 packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration_spec.ts create mode 100644 packages/schematics/angular/migrations/replace-provide-server-routing/migration.ts create mode 100644 packages/schematics/angular/migrations/replace-provide-server-routing/migration_spec.ts diff --git a/packages/schematics/angular/migrations/migration-collection.json b/packages/schematics/angular/migrations/migration-collection.json index 14815a63d5a6..4afb4facc7a3 100644 --- a/packages/schematics/angular/migrations/migration-collection.json +++ b/packages/schematics/angular/migrations/migration-collection.json @@ -1,5 +1,15 @@ { "schematics": { + "replace-provide-server-rendering-import": { + "version": "20.0.0", + "factory": "./replace-provide-server-rendering-import/migration", + "description": "Migrate imports of 'provideServerRendering' from '@angular/platform-server' to '@angular/ssr'." + }, + "replace-provide-server-routing": { + "version": "20.0.0", + "factory": "./replace-provide-server-routing/migration", + "description": "Migrate 'provideServerRendering' to use 'withRoutes' and remove 'provideServerRouting' from '@angular/ssr'." + }, "use-application-builder": { "version": "20.0.0", "factory": "./use-application-builder/migration", diff --git a/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration.ts b/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration.ts new file mode 100644 index 000000000000..dcca288e63d4 --- /dev/null +++ b/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration.ts @@ -0,0 +1,110 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { DirEntry, Rule } from '@angular-devkit/schematics'; +import * as ts from '../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { NodeDependencyType, addPackageJsonDependency } from '../../utility/dependencies'; +import { latestVersions } from '../../utility/latest-versions'; + +function* visit(directory: DirEntry): IterableIterator<[fileName: string, contents: string]> { + for (const path of directory.subfiles) { + if (path.endsWith('.ts') && !path.endsWith('.d.ts')) { + const entry = directory.file(path); + if (entry) { + const content = entry.content; + if ( + content.includes('provideServerRendering') && + content.includes('@angular/platform-server') + ) { + // Only need to rename the import so we can just string replacements. + yield [entry.path, content.toString()]; + } + } + } + } + + for (const path of directory.subdirs) { + if (path === 'node_modules' || path.startsWith('.')) { + continue; + } + + yield* visit(directory.dir(path)); + } +} + +export default function (): Rule { + return async (tree) => { + addPackageJsonDependency(tree, { + name: '@angular/ssr', + version: latestVersions.AngularSSR, + type: NodeDependencyType.Default, + overwrite: false, + }); + + for (const [filePath, content] of visit(tree.root)) { + let updatedContent = content; + const ssrImports = new Set(); + const platformServerImports = new Set(); + const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true); + + sourceFile.forEachChild((node) => { + if (ts.isImportDeclaration(node)) { + const moduleSpecifier = node.moduleSpecifier.getText(sourceFile); + if (moduleSpecifier.includes('@angular/platform-server')) { + const importClause = node.importClause; + if ( + importClause && + importClause.namedBindings && + ts.isNamedImports(importClause.namedBindings) + ) { + const namedImports = importClause.namedBindings.elements.map((e) => + e.getText(sourceFile), + ); + namedImports.forEach((importName) => { + if (importName === 'provideServerRendering') { + ssrImports.add(importName); + } else { + platformServerImports.add(importName); + } + }); + } + updatedContent = updatedContent.replace(node.getFullText(sourceFile), ''); + } else if (moduleSpecifier.includes('@angular/ssr')) { + const importClause = node.importClause; + if ( + importClause && + importClause.namedBindings && + ts.isNamedImports(importClause.namedBindings) + ) { + importClause.namedBindings.elements.forEach((e) => { + ssrImports.add(e.getText(sourceFile)); + }); + } + updatedContent = updatedContent.replace(node.getFullText(sourceFile), ''); + } + } + }); + + if (platformServerImports.size > 0) { + updatedContent = + `import { ${Array.from(platformServerImports).sort().join(', ')} } from '@angular/platform-server';\n` + + updatedContent; + } + + if (ssrImports.size > 0) { + updatedContent = + `import { ${Array.from(ssrImports).sort().join(', ')} } from '@angular/ssr';\n` + + updatedContent; + } + + if (content !== updatedContent) { + tree.overwrite(filePath, updatedContent); + } + } + }; +} diff --git a/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration_spec.ts b/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration_spec.ts new file mode 100644 index 000000000000..8d4060a9dd2a --- /dev/null +++ b/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration_spec.ts @@ -0,0 +1,75 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { EmptyTree } from '@angular-devkit/schematics'; +import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; + +describe(`Migration to use the 'provideServerRendering' from '@angular/ssr'`, () => { + const schematicRunner = new SchematicTestRunner( + 'migrations', + require.resolve('../migration-collection.json'), + ); + + let tree: UnitTestTree; + const schematicName = 'replace-provide-server-rendering-import'; + + beforeEach(() => { + tree = new UnitTestTree(new EmptyTree()); + tree.create( + '/package.json', + JSON.stringify({ + dependencies: { + '@angular/ssr': '0.0.0', + }, + }), + ); + }); + + it('should replace provideServerRendering with @angular/ssr and keep other imports', async () => { + tree.create( + 'test.ts', + `import { provideServerRendering, otherFunction } from '@angular/platform-server';`, + ); + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const content = newTree.readContent('test.ts'); + expect(content).toContain("import { provideServerRendering } from '@angular/ssr';"); + expect(content).toContain("import { otherFunction } from '@angular/platform-server';"); + }); + + it('should not replace provideServerRendering that is imported from @angular/ssr', async () => { + tree.create( + 'test.ts', + ` + import { otherFunction } from '@angular/platform-server'; + import { provideServerRendering, provideServerRouting } from '@angular/ssr'; + `, + ); + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const content = newTree.readContent('test.ts'); + expect(content).toContain( + "import { provideServerRendering, provideServerRouting } from '@angular/ssr';", + ); + expect(content).toContain("import { otherFunction } from '@angular/platform-server';"); + }); + + it('should merge with existing @angular/ssr imports', async () => { + tree.create( + 'test.ts', + ` + import { provideServerRouting } from '@angular/ssr'; + import { provideServerRendering } from '@angular/platform-server'; + `, + ); + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const content = newTree.readContent('test.ts'); + expect(content).toContain( + "import { provideServerRendering, provideServerRouting } from '@angular/ssr';", + ); + expect(content.match(/@angular\/ssr/g) || []).toHaveSize(1); + }); +}); diff --git a/packages/schematics/angular/migrations/replace-provide-server-routing/migration.ts b/packages/schematics/angular/migrations/replace-provide-server-routing/migration.ts new file mode 100644 index 000000000000..8fc662b6b69a --- /dev/null +++ b/packages/schematics/angular/migrations/replace-provide-server-routing/migration.ts @@ -0,0 +1,114 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { DirEntry, Rule } from '@angular-devkit/schematics'; +import * as ts from '../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { getPackageJsonDependency } from '../../utility/dependencies'; + +function* visit(directory: DirEntry): IterableIterator<[fileName: string, contents: string]> { + for (const path of directory.subfiles) { + if (path.endsWith('.ts') && !path.endsWith('.d.ts')) { + const entry = directory.file(path); + if (entry) { + const content = entry.content; + if (content.includes('provideServerRouting') && content.includes('@angular/ssr')) { + // Only need to rename the import so we can just string replacements. + yield [entry.path, content.toString()]; + } + } + } + } + + for (const path of directory.subdirs) { + if (path === 'node_modules' || path.startsWith('.')) { + continue; + } + + yield* visit(directory.dir(path)); + } +} + +export default function (): Rule { + return async (tree) => { + if (!getPackageJsonDependency(tree, '@angular/ssr')) { + return; + } + + for (const [filePath, content] of visit(tree.root)) { + const recorder = tree.beginUpdate(filePath); + const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true); + + function visit(node: ts.Node) { + if ( + ts.isPropertyAssignment(node) && + ts.isIdentifier(node.name) && + node.name.text === 'providers' && + ts.isArrayLiteralExpression(node.initializer) + ) { + const providersArray = node.initializer; + const newProviders = providersArray.elements + .filter((el) => { + return !( + ts.isCallExpression(el) && + ts.isIdentifier(el.expression) && + el.expression.text === 'provideServerRendering' + ); + }) + .map((el) => { + if ( + ts.isCallExpression(el) && + ts.isIdentifier(el.expression) && + el.expression.text === 'provideServerRouting' + ) { + const [withRouteVal, ...others] = el.arguments.map((arg) => arg.getText()); + + return `provideServerRendering(withRoutes(${withRouteVal})${others.length ? ', ' + others.join(', ') : ''})`; + } + + return el.getText(); + }); + + // Update the 'providers' array in the source file + recorder.remove(providersArray.getStart(), providersArray.getWidth()); + recorder.insertRight(providersArray.getStart(), `[${newProviders.join(', ')}]`); + } + + ts.forEachChild(node, visit); + } + + // Visit all nodes to update 'providers' + visit(sourceFile); + + // Update imports by removing 'provideServerRouting' + const importDecl = sourceFile.statements.find( + (stmt) => + ts.isImportDeclaration(stmt) && + ts.isStringLiteral(stmt.moduleSpecifier) && + stmt.moduleSpecifier.text === '@angular/ssr', + ) as ts.ImportDeclaration | undefined; + + if (importDecl?.importClause?.namedBindings) { + const namedBindings = importDecl?.importClause.namedBindings; + + if (ts.isNamedImports(namedBindings)) { + const elements = namedBindings.elements; + const updatedElements = elements + .map((el) => el.getText()) + .filter((x) => x !== 'provideServerRouting'); + + updatedElements.push('withRoutes'); + + recorder.remove(namedBindings.getStart(), namedBindings.getWidth()); + recorder.insertLeft(namedBindings.getStart(), `{ ${updatedElements.sort().join(', ')} }`); + } + } + + tree.commitUpdate(recorder); + } + }; +} diff --git a/packages/schematics/angular/migrations/replace-provide-server-routing/migration_spec.ts b/packages/schematics/angular/migrations/replace-provide-server-routing/migration_spec.ts new file mode 100644 index 000000000000..a0ab33aa15f1 --- /dev/null +++ b/packages/schematics/angular/migrations/replace-provide-server-routing/migration_spec.ts @@ -0,0 +1,89 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { EmptyTree } from '@angular-devkit/schematics'; +import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; + +describe(`Migration to replace 'provideServerRouting' with 'provideServerRendering' from '@angular/ssr'`, () => { + const schematicRunner = new SchematicTestRunner( + 'migrations', + require.resolve('../migration-collection.json'), + ); + + const schematicName = 'replace-provide-server-routing'; + let tree: UnitTestTree; + + beforeEach(async () => { + tree = new UnitTestTree(new EmptyTree()); + tree.create( + '/package.json', + JSON.stringify({ + dependencies: { + '@angular/ssr': '0.0.0', + }, + }), + ); + + tree.create( + 'src/app/app.config.ts', + ` + import { ApplicationConfig } from '@angular/core'; + import { provideServerRendering, provideServerRouting } from '@angular/ssr'; + import { serverRoutes } from './app.routes'; + + const serverConfig: ApplicationConfig = { + providers: [ + provideServerRendering(), + provideServerRouting(serverRoutes) + ] + }; + `, + ); + }); + + it('should add "withRoutes" to the import statement', async () => { + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const content = newTree.readContent('src/app/app.config.ts'); + + expect(content).toContain(`import { provideServerRendering, withRoutes } from '@angular/ssr';`); + }); + + it('should remove "provideServerRouting" and update "provideServerRendering"', async () => { + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const content = newTree.readContent('src/app/app.config.ts'); + + expect(content).toContain(`providers: [provideServerRendering(withRoutes(serverRoutes))]`); + expect(content).not.toContain(`provideServerRouting(serverRoutes)`); + }); + + it('should correctly handle provideServerRouting with extra arguments', async () => { + tree.overwrite( + 'src/app/app.config.ts', + ` + import { ApplicationConfig } from '@angular/core'; + import { provideServerRendering, provideServerRouting } from '@angular/ssr'; + import { serverRoutes } from './app.routes'; + + const serverConfig: ApplicationConfig = { + providers: [ + provideServerRendering(), + provideServerRouting(serverRoutes, withAppShell(AppShellComponent)) + ] + }; + `, + ); + + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const content = newTree.readContent('src/app/app.config.ts'); + + expect(content).toContain( + `providers: [provideServerRendering(withRoutes(serverRoutes), withAppShell(AppShellComponent))]`, + ); + expect(content).not.toContain(`provideServerRouting(serverRoutes)`); + }); +}); From b66d36b4b03f3d2051ca8c9d3b56a59718ea1b30 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 17 Mar 2025 20:37:19 -0400 Subject: [PATCH 028/160] build: move `@angular/build` specific dependencies out of root With the migration to `rules_js`, package specific dependencies now only need to be referenced with the source `package.json` for each specific package. Most of the `@angular/build` specific dependencies have now been moved. This is not exhaustive and further changes will continue to move additional dependencies. --- package.json | 12 ---- packages/angular/build/BUILD.bazel | 30 ++++----- packages/angular/build/package.json | 5 +- packages/angular/pwa/BUILD.bazel | 2 +- .../angular_devkit/build_angular/BUILD.bazel | 12 ++-- .../angular_devkit/build_angular/package.json | 5 +- .../angular_devkit/schematics/BUILD.bazel | 2 +- pnpm-lock.yaml | 63 +++++++------------ 8 files changed, 53 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index 3ab29836476d..82a6fd460c8f 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@ampproject/remapping": "2.3.0", "@angular/animations": "20.0.0-next.2", "@angular/cdk": "20.0.0-next.1", "@angular/common": "20.0.0-next.2", @@ -134,19 +133,11 @@ "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "karma-source-map-support": "1.4.0", - "less": "4.2.2", "listr2": "8.2.5", - "lmdb": "3.2.6", "lodash": "^4.17.21", - "magic-string": "0.30.17", - "mrmime": "2.0.1", - "ng-packagr": "20.0.0-next.1", "npm": "^11.0.0", "open": "10.1.0", "ora": "5.4.1", - "parse5-html-rewriting-stream": "7.0.0", - "piscina": "4.9.0", - "postcss": "8.5.3", "prettier": "^3.0.0", "protractor": "~7.0.0", "puppeteer": "18.2.1", @@ -155,13 +146,11 @@ "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.2", - "sass": "1.85.1", "semver": "7.7.1", "shelljs": "^0.9.0", "source-map-support": "0.5.21", "symbol-observable": "4.0.0", "tar": "^7.0.0", - "tinyglobby": "0.2.12", "tree-kill": "1.2.2", "ts-node": "^10.9.1", "tslib": "2.8.1", @@ -170,7 +159,6 @@ "unenv": "^1.10.0", "verdaccio": "6.0.5", "verdaccio-auth-memory": "^10.0.0", - "watchpack": "2.4.2", "yargs-parser": "21.1.1", "zone.js": "^0.15.0" }, diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 624e8c31dc35..360a934950d2 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -74,15 +74,28 @@ ts_project( data = RUNTIME_ASSETS, module_name = "@angular/build", deps = [ + ":node_modules/@ampproject/remapping", ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", ":node_modules/@angular/ssr", ":node_modules/@inquirer/confirm", ":node_modules/@vitejs/plugin-basic-ssl", ":node_modules/jsonc-parser", + ":node_modules/less", + ":node_modules/listr2", + ":node_modules/lmdb", + ":node_modules/magic-string", + ":node_modules/mrmime", + ":node_modules/ng-packagr", + ":node_modules/parse5-html-rewriting-stream", ":node_modules/picomatch", + ":node_modules/piscina", + ":node_modules/postcss", + ":node_modules/sass", + ":node_modules/source-map-support", + ":node_modules/tinyglobby", ":node_modules/vite", - "//:node_modules/@ampproject/remapping", + ":node_modules/watchpack", "//:node_modules/@angular/common", "//:node_modules/@angular/compiler", "//:node_modules/@angular/compiler-cli", @@ -108,23 +121,10 @@ ts_project( "//:node_modules/https-proxy-agent", "//:node_modules/istanbul-lib-instrument", "//:node_modules/karma", - "//:node_modules/less", - "//:node_modules/listr2", - "//:node_modules/lmdb", - "//:node_modules/magic-string", - "//:node_modules/mrmime", - "//:node_modules/ng-packagr", - "//:node_modules/parse5-html-rewriting-stream", - "//:node_modules/piscina", - "//:node_modules/postcss", "//:node_modules/rollup", - "//:node_modules/sass", "//:node_modules/semver", - "//:node_modules/source-map-support", - "//:node_modules/tinyglobby", "//:node_modules/tslib", "//:node_modules/typescript", - "//:node_modules/watchpack", ], ) @@ -204,7 +204,7 @@ ts_project( "//:node_modules/@angular/platform-browser", "//:node_modules/@angular/platform-browser-dynamic", "//:node_modules/@angular/router", - "//:node_modules/ng-packagr", + ":node_modules/ng-packagr", "//:node_modules/rxjs", "//:node_modules/tslib", "//:node_modules/typescript", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 77a5743eaa84..24b7b13b7fdf 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -51,7 +51,10 @@ }, "devDependencies": { "@angular/ssr": "workspace:*", - "@angular-devkit/core": "workspace:*" + "@angular-devkit/core": "workspace:*", + "less": "4.2.2", + "ng-packagr": "20.0.0-next.1", + "postcss": "8.5.3" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/pwa/BUILD.bazel b/packages/angular/pwa/BUILD.bazel index 1e0355fe015c..ae0131acbb1f 100644 --- a/packages/angular/pwa/BUILD.bazel +++ b/packages/angular/pwa/BUILD.bazel @@ -36,8 +36,8 @@ ts_project( deps = [ ":node_modules/@angular-devkit/schematics", ":node_modules/@schematics/angular", + ":node_modules/parse5-html-rewriting-stream", "//:node_modules/@types/node", - "//:node_modules/parse5-html-rewriting-stream", ], ) diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 55548ff4b108..7297a03b4264 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -129,6 +129,7 @@ ts_project( data = RUNTIME_ASSETS, module_name = "@angular-devkit/build-angular", deps = [ + ":node_modules/@ampproject/remapping", ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/build-webpack", ":node_modules/@angular-devkit/core", @@ -151,17 +152,21 @@ ts_project( ":node_modules/license-webpack-plugin", ":node_modules/loader-utils", ":node_modules/mini-css-extract-plugin", + ":node_modules/ng-packagr", + ":node_modules/piscina", + ":node_modules/postcss", ":node_modules/postcss-loader", ":node_modules/resolve-url-loader", + ":node_modules/sass", ":node_modules/sass-loader", ":node_modules/source-map-loader", + ":node_modules/source-map-support", ":node_modules/terser", ":node_modules/webpack", ":node_modules/webpack-dev-middleware", ":node_modules/webpack-dev-server", ":node_modules/webpack-merge", ":node_modules/webpack-subresource-integrity", - "//:node_modules/@ampproject/remapping", "//:node_modules/@angular/common", "//:node_modules/@angular/compiler-cli", "//:node_modules/@angular/core", @@ -193,15 +198,10 @@ ts_project( "//:node_modules/istanbul-lib-instrument", "//:node_modules/karma", "//:node_modules/karma-source-map-support", - "//:node_modules/ng-packagr", "//:node_modules/open", "//:node_modules/ora", - "//:node_modules/piscina", - "//:node_modules/postcss", "//:node_modules/rxjs", - "//:node_modules/sass", "//:node_modules/semver", - "//:node_modules/source-map-support", "//:node_modules/tree-kill", "//:node_modules/tslib", "//:node_modules/typescript", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 573444d7c74e..897256b6876f 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -66,8 +66,9 @@ "esbuild": "0.25.1" }, "devDependencies": { - "undici": "7.5.0", - "@angular/ssr": "workspace:*" + "@angular/ssr": "workspace:*", + "ng-packagr": "20.0.0-next.1", + "undici": "7.5.0" }, "peerDependencies": { "@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular_devkit/schematics/BUILD.bazel b/packages/angular_devkit/schematics/BUILD.bazel index 43ea9318f7bb..878a20442373 100644 --- a/packages/angular_devkit/schematics/BUILD.bazel +++ b/packages/angular_devkit/schematics/BUILD.bazel @@ -29,8 +29,8 @@ ts_project( deps = [ ":node_modules/@angular-devkit/core", ":node_modules/jsonc-parser", + ":node_modules/magic-string", "//:node_modules/@types/node", - "//:node_modules/magic-string", "//:node_modules/rxjs", ], ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e815d7c1df5b..0159672ca741 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: .: devDependencies: - '@ampproject/remapping': - specifier: 2.3.0 - version: 2.3.0 '@angular/animations': specifier: 20.0.0-next.2 version: 20.0.0-next.2(@angular/core@20.0.0-next.2) @@ -278,27 +275,12 @@ importers: karma-source-map-support: specifier: 1.4.0 version: 1.4.0 - less: - specifier: 4.2.2 - version: 4.2.2 listr2: specifier: 8.2.5 version: 8.2.5 - lmdb: - specifier: 3.2.6 - version: 3.2.6 lodash: specifier: ^4.17.21 version: 4.17.21 - magic-string: - specifier: 0.30.17 - version: 0.30.17 - mrmime: - specifier: 2.0.1 - version: 2.0.1 - ng-packagr: - specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) npm: specifier: ^11.0.0 version: 11.2.0 @@ -308,15 +290,6 @@ importers: ora: specifier: 5.4.1 version: 5.4.1 - parse5-html-rewriting-stream: - specifier: 7.0.0 - version: 7.0.0 - piscina: - specifier: 4.9.0 - version: 4.9.0 - postcss: - specifier: 8.5.3 - version: 8.5.3 prettier: specifier: ^3.0.0 version: 3.5.3 @@ -341,9 +314,6 @@ importers: rxjs: specifier: 7.8.2 version: 7.8.2 - sass: - specifier: 1.85.1 - version: 1.85.1 semver: specifier: 7.7.1 version: 7.7.1 @@ -359,9 +329,6 @@ importers: tar: specifier: ^7.0.0 version: 7.4.3 - tinyglobby: - specifier: 0.2.12 - version: 0.2.12 tree-kill: specifier: 1.2.2 version: 1.2.2 @@ -386,9 +353,6 @@ importers: verdaccio-auth-memory: specifier: ^10.0.0 version: 10.2.2 - watchpack: - specifier: 2.4.2 - version: 2.4.2 yargs-parser: specifier: 21.1.1 version: 21.1.1 @@ -510,6 +474,15 @@ importers: '@angular/ssr': specifier: workspace:* version: link:../ssr + less: + specifier: 4.2.2 + version: 4.2.2 + ng-packagr: + specifier: 20.0.0-next.1 + version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + postcss: + specifier: 8.5.3 + version: 8.5.3 packages/angular/cli: dependencies: @@ -817,6 +790,9 @@ importers: '@angular/ssr': specifier: workspace:* version: link:../../angular/ssr + ng-packagr: + specifier: 20.0.0-next.1 + version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: specifier: 7.5.0 version: 7.5.0 @@ -11636,7 +11612,8 @@ snapshots: detect-libc@1.0.3: optional: true - detect-libc@2.0.3: {} + detect-libc@2.0.3: + optional: true detect-node@2.1.0: {} @@ -13457,6 +13434,7 @@ snapshots: '@lmdb/lmdb-linux-arm64': 3.2.6 '@lmdb/lmdb-linux-x64': 3.2.6 '@lmdb/lmdb-win32-x64': 3.2.6 + optional: true loader-runner@4.3.0: {} @@ -13737,6 +13715,7 @@ snapshots: msgpackr@1.11.2: optionalDependencies: msgpackr-extract: 3.0.3 + optional: true multicast-dns@7.2.5: dependencies: @@ -13799,7 +13778,8 @@ snapshots: nice-try@1.0.5: {} - node-addon-api@6.1.0: {} + node-addon-api@6.1.0: + optional: true node-addon-api@7.1.1: optional: true @@ -13831,6 +13811,7 @@ snapshots: node-gyp-build-optional-packages@5.2.2: dependencies: detect-libc: 2.0.3 + optional: true node-gyp@11.1.0: dependencies: @@ -14017,7 +13998,8 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - ordered-binary@1.5.3: {} + ordered-binary@1.5.3: + optional: true os-tmpdir@1.0.2: {} @@ -15773,7 +15755,8 @@ snapshots: dependencies: defaults: 1.0.4 - weak-lru-cache@1.2.2: {} + weak-lru-cache@1.2.2: + optional: true web-streams-polyfill@3.3.3: {} From 86d241629ff51f0bb5988e81cac8658b01704d49 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 18 Mar 2025 18:43:31 +0000 Subject: [PATCH 029/160] fix(@schematics/angular): add `@angular/ssr` dependency only when `provideServerRendering` import has been updated Prior to this commit, the dependency was always added. --- .../migration.ts | 18 ++++++++++----- .../migration_spec.ts | 22 ++++++++++++++++--- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration.ts b/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration.ts index dcca288e63d4..ed8e0d7598f3 100644 --- a/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration.ts +++ b/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration.ts @@ -39,12 +39,7 @@ function* visit(directory: DirEntry): IterableIterator<[fileName: string, conten export default function (): Rule { return async (tree) => { - addPackageJsonDependency(tree, { - name: '@angular/ssr', - version: latestVersions.AngularSSR, - type: NodeDependencyType.Default, - overwrite: false, - }); + let angularSSRAdded = false; for (const [filePath, content] of visit(tree.root)) { let updatedContent = content; @@ -104,6 +99,17 @@ export default function (): Rule { if (content !== updatedContent) { tree.overwrite(filePath, updatedContent); + + if (!angularSSRAdded) { + addPackageJsonDependency(tree, { + name: '@angular/ssr', + version: latestVersions.AngularSSR, + type: NodeDependencyType.Default, + overwrite: false, + }); + + angularSSRAdded = true; + } } } }; diff --git a/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration_spec.ts b/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration_spec.ts index 8d4060a9dd2a..6746172882fb 100644 --- a/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration_spec.ts +++ b/packages/schematics/angular/migrations/replace-provide-server-rendering-import/migration_spec.ts @@ -23,9 +23,7 @@ describe(`Migration to use the 'provideServerRendering' from '@angular/ssr'`, () tree.create( '/package.json', JSON.stringify({ - dependencies: { - '@angular/ssr': '0.0.0', - }, + dependencies: {}, }), ); }); @@ -72,4 +70,22 @@ describe(`Migration to use the 'provideServerRendering' from '@angular/ssr'`, () ); expect(content.match(/@angular\/ssr/g) || []).toHaveSize(1); }); + + it(`should add '@angular/ssr' when import has been changed`, async () => { + tree.create('test.ts', `import { provideServerRendering } from '@angular/platform-server';`); + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const { dependencies } = newTree.readJson('package.json') as { + dependencies: Record; + }; + expect(dependencies['@angular/ssr']).toBeDefined(); + }); + + it(`should not add '@angular/ssr' dependency if no imports have been updated`, async () => { + tree.create('test.ts', `import { provideClientHydration } from '@angular/platform-browser';`); + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const { dependencies } = newTree.readJson('package.json') as { + dependencies: Record; + }; + expect(dependencies['@angular/ssr']).toBeUndefined(); + }); }); From c0de723173549f62a524b6e6c58c6d80c8054581 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 19 Mar 2025 10:09:29 +0000 Subject: [PATCH 030/160] fix(@schematics/angular): replace `@angular/platform-browser-dynamic` with `@angular/platform-browser` The Angular CLI expliclty adds `@angular/compiler` as a polyfill when JIT mode is enabled which makes using `@angular/platform-browser-dynamic` redundant and causes the compiler to be imported twice. --- .../application/files/module-files/src/main.ts.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/application/files/module-files/src/main.ts.template b/packages/schematics/angular/application/files/module-files/src/main.ts.template index a4e16b837f8a..e851fbfb07fc 100644 --- a/packages/schematics/angular/application/files/module-files/src/main.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/main.ts.template @@ -1,8 +1,8 @@ <% if(!!viewEncapsulation) { %>import { ViewEncapsulation } from '@angular/core'; -<% }%>import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +<% }%>import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; -platformBrowserDynamic().bootstrapModule(AppModule, { +platformBrowser().bootstrapModule(AppModule, { <% if(!experimentalZoneless) { %>ngZoneEventCoalescing: true,<% } %><% if(!!viewEncapsulation) { %> defaultEncapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } %> }) From db32cc2ca2433f34b53df55c4531366e59bf36cf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 18 Mar 2025 20:38:04 -0400 Subject: [PATCH 031/160] build: move more `@angular-devkit/build-angular` specific dependencies out of root With the migration to `rules_js`, package specific dependencies now only need to be referenced with the source `package.json` for each specific package. Most of the `@angular-devkit/build-angular` specific dependencies have now been moved. This is not exhaustive and further changes will continue to move additional dependencies. --- package.json | 13 ---- packages/angular/build/BUILD.bazel | 16 ++--- .../angular_devkit/build_angular/BUILD.bazel | 28 ++++---- .../angular_devkit/build_angular/package.json | 2 + .../schematics/tasks/BUILD.bazel | 2 +- packages/schematics/angular/BUILD.bazel | 1 - pnpm-lock.yaml | 72 +++---------------- tests/legacy-cli/e2e/utils/BUILD.bazel | 2 +- tests/package.json | 3 +- 9 files changed, 38 insertions(+), 101 deletions(-) diff --git a/package.json b/package.json index 82a6fd460c8f..525a50f7bb0d 100644 --- a/package.json +++ b/package.json @@ -61,11 +61,6 @@ "@angular/platform-server": "20.0.0-next.2", "@angular/router": "20.0.0-next.2", "@angular/service-worker": "20.0.0-next.2", - "@babel/core": "7.26.10", - "@babel/generator": "7.26.10", - "@babel/helper-annotate-as-pure": "7.25.9", - "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-syntax-import-attributes": "7.26.0", "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "8.0.3", "@eslint/compat": "1.2.7", @@ -102,12 +97,9 @@ "@types/yarnpkg__lockfile": "^1.1.5", "@typescript-eslint/eslint-plugin": "8.26.1", "@typescript-eslint/parser": "8.26.1", - "@web/test-runner": "^0.20.0", "ajv": "8.17.1", "ansi-colors": "4.1.3", "beasties": "0.2.0", - "browser-sync": "3.0.3", - "browserslist": "^4.21.5", "buffer": "6.0.3", "esbuild": "0.25.1", "esbuild-wasm": "0.25.1", @@ -120,9 +112,7 @@ "globals": "16.0.0", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.3", - "https-proxy-agent": "7.0.6", "husky": "9.1.7", - "istanbul-lib-instrument": "6.0.3", "jasmine": "~5.6.0", "jasmine-core": "~5.6.0", "jasmine-reporters": "^2.5.2", @@ -136,8 +126,6 @@ "listr2": "8.2.5", "lodash": "^4.17.21", "npm": "^11.0.0", - "open": "10.1.0", - "ora": "5.4.1", "prettier": "^3.0.0", "protractor": "~7.0.0", "puppeteer": "18.2.1", @@ -151,7 +139,6 @@ "source-map-support": "0.5.21", "symbol-observable": "4.0.0", "tar": "^7.0.0", - "tree-kill": "1.2.2", "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.8.2", diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 360a934950d2..061e096e6e58 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -78,8 +78,15 @@ ts_project( ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", ":node_modules/@angular/ssr", + ":node_modules/@babel/core", + ":node_modules/@babel/helper-annotate-as-pure", + ":node_modules/@babel/helper-split-export-declaration", + ":node_modules/@babel/plugin-syntax-import-attributes", ":node_modules/@inquirer/confirm", ":node_modules/@vitejs/plugin-basic-ssl", + ":node_modules/browserslist", + ":node_modules/https-proxy-agent", + ":node_modules/istanbul-lib-instrument", ":node_modules/jsonc-parser", ":node_modules/less", ":node_modules/listr2", @@ -103,10 +110,6 @@ ts_project( "//:node_modules/@angular/localize", "//:node_modules/@angular/platform-server", "//:node_modules/@angular/service-worker", - "//:node_modules/@babel/core", - "//:node_modules/@babel/helper-annotate-as-pure", - "//:node_modules/@babel/helper-split-export-declaration", - "//:node_modules/@babel/plugin-syntax-import-attributes", "//:node_modules/@types/babel__core", "//:node_modules/@types/karma", "//:node_modules/@types/less", @@ -115,11 +118,8 @@ ts_project( "//:node_modules/@types/semver", "//:node_modules/@types/watchpack", "//:node_modules/beasties", - "//:node_modules/browserslist", "//:node_modules/esbuild", "//:node_modules/esbuild-wasm", - "//:node_modules/https-proxy-agent", - "//:node_modules/istanbul-lib-instrument", "//:node_modules/karma", "//:node_modules/rollup", "//:node_modules/semver", @@ -138,8 +138,8 @@ ts_project( deps = [ ":build", ":node_modules/@angular-devkit/core", + ":node_modules/@babel/core", "//:node_modules/@angular/compiler-cli", - "//:node_modules/@babel/core", "//:node_modules/@types/jasmine", "//:node_modules/prettier", "//:node_modules/typescript", diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 7297a03b4264..8b1783f04c47 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -135,6 +135,10 @@ ts_project( ":node_modules/@angular-devkit/core", ":node_modules/@angular/build", ":node_modules/@angular/ssr", + ":node_modules/@babel/core", + ":node_modules/@babel/generator", + ":node_modules/@babel/helper-annotate-as-pure", + ":node_modules/@babel/helper-split-export-declaration", ":node_modules/@babel/plugin-transform-async-generator-functions", ":node_modules/@babel/plugin-transform-async-to-generator", ":node_modules/@babel/plugin-transform-runtime", @@ -142,10 +146,16 @@ ts_project( ":node_modules/@babel/runtime", ":node_modules/@discoveryjs/json-ext", ":node_modules/@ngtools/webpack", + ":node_modules/@web/test-runner", + ":node_modules/ansi-colors", ":node_modules/autoprefixer", ":node_modules/babel-loader", + ":node_modules/browser-sync", + ":node_modules/browserslist", ":node_modules/copy-webpack-plugin", ":node_modules/css-loader", + ":node_modules/http-proxy-middleware", + ":node_modules/istanbul-lib-instrument", ":node_modules/jsonc-parser", ":node_modules/less", ":node_modules/less-loader", @@ -153,6 +163,8 @@ ts_project( ":node_modules/loader-utils", ":node_modules/mini-css-extract-plugin", ":node_modules/ng-packagr", + ":node_modules/open", + ":node_modules/ora", ":node_modules/piscina", ":node_modules/postcss", ":node_modules/postcss-loader", @@ -162,6 +174,7 @@ ts_project( ":node_modules/source-map-loader", ":node_modules/source-map-support", ":node_modules/terser", + ":node_modules/tree-kill", ":node_modules/webpack", ":node_modules/webpack-dev-middleware", ":node_modules/webpack-dev-server", @@ -173,10 +186,6 @@ ts_project( "//:node_modules/@angular/localize", "//:node_modules/@angular/platform-server", "//:node_modules/@angular/service-worker", - "//:node_modules/@babel/core", - "//:node_modules/@babel/generator", - "//:node_modules/@babel/helper-annotate-as-pure", - "//:node_modules/@babel/helper-split-export-declaration", "//:node_modules/@types/babel__core", "//:node_modules/@types/babel__generator", "//:node_modules/@types/browser-sync", @@ -187,22 +196,13 @@ ts_project( "//:node_modules/@types/picomatch", "//:node_modules/@types/semver", "//:node_modules/@types/watchpack", - "//:node_modules/@web/test-runner", - "//:node_modules/ansi-colors", - "//:node_modules/browser-sync", - "//:node_modules/browserslist", "//:node_modules/esbuild", "//:node_modules/esbuild-wasm", "//:node_modules/fast-glob", - "//:node_modules/http-proxy-middleware", - "//:node_modules/istanbul-lib-instrument", "//:node_modules/karma", "//:node_modules/karma-source-map-support", - "//:node_modules/open", - "//:node_modules/ora", "//:node_modules/rxjs", "//:node_modules/semver", - "//:node_modules/tree-kill", "//:node_modules/tslib", "//:node_modules/typescript", ], @@ -373,7 +373,7 @@ LARGE_SPECS = { ":node_modules/@angular/ssr", "//:node_modules/@types/browser-sync", "//:node_modules/@types/node", - "//:node_modules/browser-sync", + ":node_modules/browser-sync", "//:node_modules/express", "//:node_modules/undici", ], diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 897256b6876f..ee7a340ba836 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -67,6 +67,8 @@ }, "devDependencies": { "@angular/ssr": "workspace:*", + "@web/test-runner": "0.20.0", + "browser-sync": "3.0.3", "ng-packagr": "20.0.0-next.1", "undici": "7.5.0" }, diff --git a/packages/angular_devkit/schematics/tasks/BUILD.bazel b/packages/angular_devkit/schematics/tasks/BUILD.bazel index 5ce031b6f0b0..852646d7585f 100644 --- a/packages/angular_devkit/schematics/tasks/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/BUILD.bazel @@ -21,9 +21,9 @@ ts_project( module_name = "@angular-devkit/schematics/tasks", deps = [ "//:node_modules/@types/node", - "//:node_modules/ora", "//:node_modules/rxjs", "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics:node_modules/@angular-devkit/core", + "//packages/angular_devkit/schematics:node_modules/ora", ], ) diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index 456810e03d66..37cf21082dc3 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -92,7 +92,6 @@ ts_project( ":node_modules/@angular-devkit/schematics", ":node_modules/jsonc-parser", "//:node_modules/@types/node", - "//:node_modules/browserslist", "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript", ], ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0159672ca741..4009c9ca446a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,21 +59,6 @@ importers: '@angular/service-worker': specifier: 20.0.0-next.2 version: 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@babel/core': - specifier: 7.26.10 - version: 7.26.10 - '@babel/generator': - specifier: 7.26.10 - version: 7.26.10 - '@babel/helper-annotate-as-pure': - specifier: 7.25.9 - version: 7.25.9 - '@babel/helper-split-export-declaration': - specifier: 7.24.7 - version: 7.24.7 - '@babel/plugin-syntax-import-attributes': - specifier: 7.26.0 - version: 7.26.0(@babel/core@7.26.10) '@bazel/bazelisk': specifier: 1.25.0 version: 1.25.0 @@ -182,9 +167,6 @@ importers: '@typescript-eslint/parser': specifier: 8.26.1 version: 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) - '@web/test-runner': - specifier: ^0.20.0 - version: 0.20.0 ajv: specifier: 8.17.1 version: 8.17.1 @@ -194,12 +176,6 @@ importers: beasties: specifier: 0.2.0 version: 0.2.0 - browser-sync: - specifier: 3.0.3 - version: 3.0.3 - browserslist: - specifier: ^4.21.5 - version: 4.24.4 buffer: specifier: 6.0.3 version: 6.0.3 @@ -236,15 +212,9 @@ importers: http-proxy-middleware: specifier: 3.0.3 version: 3.0.3 - https-proxy-agent: - specifier: 7.0.6 - version: 7.0.6(supports-color@10.0.0) husky: specifier: 9.1.7 version: 9.1.7 - istanbul-lib-instrument: - specifier: 6.0.3 - version: 6.0.3 jasmine: specifier: ~5.6.0 version: 5.6.0 @@ -284,12 +254,6 @@ importers: npm: specifier: ^11.0.0 version: 11.2.0 - open: - specifier: 10.1.0 - version: 10.1.0 - ora: - specifier: 5.4.1 - version: 5.4.1 prettier: specifier: ^3.0.0 version: 3.5.3 @@ -329,9 +293,6 @@ importers: tar: specifier: ^7.0.0 version: 7.4.3 - tree-kill: - specifier: 1.2.2 - version: 1.2.2 ts-node: specifier: ^10.9.1 version: 10.9.2(@types/node@20.17.24)(typescript@5.8.2) @@ -790,6 +751,12 @@ importers: '@angular/ssr': specifier: workspace:* version: link:../../angular/ssr + '@web/test-runner': + specifier: 0.20.0 + version: 0.20.0 + browser-sync: + specifier: 3.0.3 + version: 3.0.3 ng-packagr: specifier: 20.0.0-next.1 version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) @@ -918,6 +885,9 @@ importers: '@angular-devkit/schematics': specifier: workspace:* version: link:../packages/angular_devkit/schematics + tree-kill: + specifier: 1.2.2 + version: 1.2.2 packages: @@ -6908,10 +6878,6 @@ packages: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} - send@0.19.1: - resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} - engines: {node: '>= 0.8.0'} - serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} @@ -11049,7 +11015,7 @@ snapshots: raw-body: 2.5.2 resp-modifier: 6.0.2 rx: 4.1.0 - send: 0.19.1 + send: 0.19.0 serve-index: 1.9.1 serve-static: 1.16.2 server-destroy: 1.0.1 @@ -14823,24 +14789,6 @@ snapshots: transitivePeerDependencies: - supports-color - send@0.19.1: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/legacy-cli/e2e/utils/BUILD.bazel index 4d690d4bace2..9c7a6c530504 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/legacy-cli/e2e/utils/BUILD.bazel @@ -20,8 +20,8 @@ ts_project( "//:node_modules/rxjs", "//:node_modules/semver", "//:node_modules/tar", - "//:node_modules/tree-kill", "//:node_modules/verdaccio", "//:node_modules/verdaccio-auth-memory", + "//tests:node_modules/tree-kill", ], ) diff --git a/tests/package.json b/tests/package.json index b185a3ce0da7..baa0d682413b 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,5 +1,6 @@ { "devDependencies": { - "@angular-devkit/schematics": "workspace:*" + "@angular-devkit/schematics": "workspace:*", + "tree-kill": "1.2.2" } } From 995a51f145b659d69f68553620428a1bc4c6deb3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 18 Mar 2025 18:06:05 +0000 Subject: [PATCH 032/160] build: update all non-major dependencies --- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 53 ++++++++++--------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 24b7b13b7fdf..793796fdb7f2 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,9 +37,9 @@ "mrmime": "2.0.1", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", - "piscina": "4.9.0", + "piscina": "4.9.2", "rollup": "4.36.0", - "sass": "1.85.1", + "sass": "1.86.0", "semver": "7.7.1", "source-map-support": "0.5.21", "tinyglobby": "0.2.12", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index ee7a340ba836..44915bc5604a 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -43,12 +43,12 @@ "open": "10.1.0", "ora": "5.4.1", "picomatch": "4.0.2", - "piscina": "4.9.0", + "piscina": "4.9.2", "postcss": "8.5.3", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.85.1", + "sass": "1.86.0", "sass-loader": "16.0.5", "semver": "7.7.1", "source-map-loader": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4009c9ca446a..d81eec8955db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -366,7 +366,7 @@ importers: version: 5.1.8(@types/node@20.17.24) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -401,14 +401,14 @@ importers: specifier: 4.0.2 version: 4.0.2 piscina: - specifier: 4.9.0 - version: 4.9.0 + specifier: 4.9.2 + version: 4.9.2 rollup: specifier: 4.36.0 version: 4.36.0 sass: - specifier: 1.85.1 - version: 1.85.1 + specifier: 1.86.0 + version: 1.86.0 semver: specifier: 7.7.1 version: 7.7.1 @@ -420,7 +420,7 @@ importers: version: 0.2.12 vite: specifier: 6.2.2 - version: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) + version: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -628,7 +628,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -690,8 +690,8 @@ importers: specifier: 4.0.2 version: 4.0.2 piscina: - specifier: 4.9.0 - version: 4.9.0 + specifier: 4.9.2 + version: 4.9.2 postcss: specifier: 8.5.3 version: 8.5.3 @@ -705,11 +705,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.85.1 - version: 1.85.1 + specifier: 1.86.0 + version: 1.86.0 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.85.1)(webpack@5.98.0(esbuild@0.25.1)) + version: 16.0.5(sass@1.86.0)(webpack@5.98.0(esbuild@0.25.1)) semver: specifier: 7.7.1 version: 7.7.1 @@ -6383,8 +6383,8 @@ packages: resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} hasBin: true - piscina@4.9.0: - resolution: {integrity: sha512-JCxYZiHa5nlL8fPSJcw0QBUKEgkdxH9Pi7JK2WQ6WQk7UXufbdiaw9AN7wFUGdvvAHFH+lrudfR8nsMlrpnfCQ==} + piscina@4.9.2: + resolution: {integrity: sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==} pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} @@ -6560,6 +6560,7 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qjobs@1.2.0: @@ -6830,8 +6831,8 @@ packages: webpack: optional: true - sass@1.85.1: - resolution: {integrity: sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==} + sass@1.86.0: + resolution: {integrity: sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==} engines: {node: '>=14.0.0'} hasBin: true @@ -10343,9 +10344,9 @@ snapshots: minimatch: 7.4.6 semver: 7.6.3 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0))': dependencies: - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) '@web/browser-logs@0.4.1': dependencies: @@ -13732,10 +13733,10 @@ snapshots: jsonc-parser: 3.3.1 less: 4.2.2 ora: 5.4.1 - piscina: 4.9.0 + piscina: 4.9.2 postcss: 8.5.3 rxjs: 7.8.2 - sass: 1.85.1 + sass: 1.86.0 tinyglobby: 0.2.12 tslib: 2.8.1 typescript: 5.8.2 @@ -14170,7 +14171,7 @@ snapshots: sonic-boom: 4.2.0 thread-stream: 3.1.0 - piscina@4.9.0: + piscina@4.9.2: optionalDependencies: '@napi-rs/nice': 1.0.1 @@ -14719,14 +14720,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.85.1)(webpack@5.98.0(esbuild@0.25.1)): + sass-loader@16.0.5(sass@1.86.0)(webpack@5.98.0(esbuild@0.25.1)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.85.1 + sass: 1.86.0 webpack: 5.98.0(esbuild@0.25.1) - sass@1.85.1: + sass@1.86.0: dependencies: chokidar: 4.0.3 immutable: 5.0.3 @@ -15674,7 +15675,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0): + vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0): dependencies: esbuild: 0.25.1 postcss: 8.5.3 @@ -15684,7 +15685,7 @@ snapshots: fsevents: 2.3.3 jiti: 1.21.7 less: 4.2.2 - sass: 1.85.1 + sass: 1.86.0 terser: 5.39.0 yaml: 2.7.0 From 6473d10223f0017662a821d740a9a85bdd82036d Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 18 Mar 2025 21:04:16 +0000 Subject: [PATCH 033/160] build: update devinfra digest to 2707802 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index fa46f259c91d..f7cc0e4712d9 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "85eab901e27abe60bb725fbfd8def94559cbe636", + commit = "27078026111b01a7202449e9788ce38f2b2e103f", remote = "https://github.com/angular/dev-infra.git", ) From 689ab8a8d082b970177e4f646f605bb10660fb3e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 18 Mar 2025 21:20:15 -0400 Subject: [PATCH 034/160] build: update development Node.js version to 22.14.0 and auto-update The version of Node.js used for development and CI jobs is now set to the active LTS version's latest minor and patch. Renovate is also now configured to update the minor and patch versions once a week. --- .nvmrc | 2 +- renovate.json | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.nvmrc b/.nvmrc index d4b7699d36ca..7d41c735d712 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20.18.1 +22.14.0 diff --git a/renovate.json b/renovate.json index 7fca84fadc0e..456adebbdb02 100644 --- a/renovate.json +++ b/renovate.json @@ -20,9 +20,19 @@ "package.json", "packages/**/package.json", "tests/legacy-cli/e2e/ng-snapshot/package.json", - ".github/workflows/**/*.yml" + ".github/workflows/**/*.yml", + ".nvmrc" ], "packageRules": [ + { + "matchDepNames": ["node"], + "matchUpdateTypes": ["minor", "patch"] + }, + { + "enabled": false, + "matchDepNames": ["node"], + "matchUpdateTypes": ["major"] + }, { "matchPackageNames": ["quicktype-core"], "schedule": ["before 4:00am on the first day of the month"] From da6ef626f960b187a7862f0caa3d8aed38224ac2 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 19 Mar 2025 12:03:24 +0000 Subject: [PATCH 035/160] fix(@schematics/angular): ensure app-shell schematic consistently uses `withAppShell` Previously, Webpack-based builders did not utilize this option. --- .../schematics/angular/app-shell/index.ts | 140 +----------------- packages/schematics/angular/server/index.ts | 2 - 2 files changed, 2 insertions(+), 140 deletions(-) diff --git a/packages/schematics/angular/app-shell/index.ts b/packages/schematics/angular/app-shell/index.ts index 66e188c4e45d..6e4c11181002 100644 --- a/packages/schematics/angular/app-shell/index.ts +++ b/packages/schematics/angular/app-shell/index.ts @@ -6,34 +6,23 @@ * found in the LICENSE file at https://angular.dev/license */ -import { - Rule, - SchematicsException, - Tree, - chain, - noop, - schematic, -} from '@angular-devkit/schematics'; +import { Rule, SchematicsException, Tree, chain, schematic } from '@angular-devkit/schematics'; import { dirname, join } from 'node:path/posix'; import ts from '../third_party/github.com/Microsoft/TypeScript/lib/typescript'; import { - addSymbolToNgModuleMetadata, findNode, findNodes, getDecoratorMetadata, getSourceNodes, insertImport, - isImported, } from '../utility/ast-utils'; import { applyToUpdateRecorder } from '../utility/change'; import { getAppModulePath, isStandaloneApp } from '../utility/ng-ast-utils'; -import { isUsingApplicationBuilder, targetBuildNotFoundError } from '../utility/project-targets'; +import { targetBuildNotFoundError } from '../utility/project-targets'; import { findBootstrapApplicationCall, getMainFilePath } from '../utility/standalone/util'; import { getWorkspace } from '../utility/workspace'; import { Schema as AppShellOptions } from './schema'; -const APP_SHELL_ROUTE = 'shell'; - function getSourceFile(host: Tree, path: string): ts.SourceFile { const content = host.readText(path); const source = ts.createSourceFile(path, content, ts.ScriptTarget.Latest, true); @@ -156,126 +145,6 @@ function getMetadataProperty(metadata: ts.Node, propertyName: string): ts.Proper return property; } -function addServerRoutes(options: AppShellOptions): Rule { - return async (host: Tree) => { - // The workspace gets updated so this needs to be reloaded - const workspace = await getWorkspace(host); - const project = workspace.projects.get(options.project); - if (!project) { - throw new SchematicsException(`Invalid project name (${options.project})`); - } - - const modulePath = getServerModulePath(host, project.sourceRoot || 'src', 'main.server.ts'); - if (modulePath === null) { - throw new SchematicsException('Server module not found.'); - } - - let moduleSource = getSourceFile(host, modulePath); - if (!isImported(moduleSource, 'Routes', '@angular/router')) { - const recorder = host.beginUpdate(modulePath); - const routesChange = insertImport(moduleSource, modulePath, 'Routes', '@angular/router'); - if (routesChange) { - applyToUpdateRecorder(recorder, [routesChange]); - } - - const imports = getSourceNodes(moduleSource) - .filter((node) => node.kind === ts.SyntaxKind.ImportDeclaration) - .sort((a, b) => a.getStart() - b.getStart()); - const insertPosition = imports[imports.length - 1].getEnd(); - const routeText = `\n\nconst routes: Routes = [ { path: '${APP_SHELL_ROUTE}', component: AppShell }];`; - recorder.insertRight(insertPosition, routeText); - host.commitUpdate(recorder); - } - - moduleSource = getSourceFile(host, modulePath); - if (!isImported(moduleSource, 'RouterModule', '@angular/router')) { - const recorder = host.beginUpdate(modulePath); - const routerModuleChange = insertImport( - moduleSource, - modulePath, - 'RouterModule', - '@angular/router', - ); - - if (routerModuleChange) { - applyToUpdateRecorder(recorder, [routerModuleChange]); - } - - const metadataChange = addSymbolToNgModuleMetadata( - moduleSource, - modulePath, - 'imports', - 'RouterModule.forRoot(routes)', - ); - if (metadataChange) { - applyToUpdateRecorder(recorder, metadataChange); - } - host.commitUpdate(recorder); - } - }; -} - -function addStandaloneServerRoute(options: AppShellOptions): Rule { - return async (host: Tree) => { - const workspace = await getWorkspace(host); - const project = workspace.projects.get(options.project); - if (!project) { - throw new SchematicsException(`Project name "${options.project}" doesn't not exist.`); - } - - const configFilePath = join(project.sourceRoot ?? 'src', 'app/app.config.server.ts'); - if (!host.exists(configFilePath)) { - throw new SchematicsException(`Cannot find "${configFilePath}".`); - } - - const recorder = host.beginUpdate(configFilePath); - let configSourceFile = getSourceFile(host, configFilePath); - if (!isImported(configSourceFile, 'ROUTES', '@angular/router')) { - const routesChange = insertImport( - configSourceFile, - configFilePath, - 'ROUTES', - '@angular/router', - ); - - if (routesChange) { - applyToUpdateRecorder(recorder, [routesChange]); - } - } - - configSourceFile = getSourceFile(host, configFilePath); - const providersLiteral = findNodes(configSourceFile, ts.isPropertyAssignment).find( - (n) => ts.isArrayLiteralExpression(n.initializer) && n.name.getText() === 'providers', - )?.initializer as ts.ArrayLiteralExpression | undefined; - if (!providersLiteral) { - throw new SchematicsException( - `Cannot find the "providers" configuration in "${configFilePath}".`, - ); - } - - // Add route to providers literal. - recorder.remove(providersLiteral.getStart(), providersLiteral.getWidth()); - const updatedProvidersString = [ - ...providersLiteral.elements.map((element) => ' ' + element.getText()), - ` { - provide: ROUTES, - multi: true, - useValue: [{ - path: '${APP_SHELL_ROUTE}', - component: AppShell - }] - }\n `, - ]; - - recorder.insertRight(providersLiteral.getStart(), `[\n${updatedProvidersString.join(',\n')}]`); - - applyToUpdateRecorder(recorder, [ - insertImport(configSourceFile, configFilePath, 'AppShell', './app-shell/app-shell'), - ]); - host.commitUpdate(recorder); - }; -} - function addServerRoutingConfig(options: AppShellOptions, isStandalone: boolean): Rule { return async (host: Tree) => { const workspace = await getWorkspace(host); @@ -335,11 +204,6 @@ export default function (options: AppShellOptions): Rule { return chain([ validateProject(browserEntryPoint), schematic('server', options), - ...(isUsingApplicationBuilder(project) - ? [noop()] - : isStandalone - ? [addStandaloneServerRoute(options)] - : [addServerRoutes(options)]), addServerRoutingConfig(options, isStandalone), schematic('component', { name: 'app-shell', diff --git a/packages/schematics/angular/server/index.ts b/packages/schematics/angular/server/index.ts index 6467a1e532fe..1f8ccd7e85aa 100644 --- a/packages/schematics/angular/server/index.ts +++ b/packages/schematics/angular/server/index.ts @@ -14,10 +14,8 @@ import { apply, applyTemplates, chain, - filter, mergeWith, move, - noop, strings, url, } from '@angular-devkit/schematics'; From cb2ab43abcf0e3c1a2cc584a326e1eea5eede7a8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 11:36:30 -0400 Subject: [PATCH 036/160] fix(@angular/build): ensure errors for missing component resources Compile time errors will now always be generated when an HTML template and/or CSS component stylesheet are not present on disk. The Angular compiler expects a return value of `null` from the `resourceNameToFileName` function to indicate that a resource path does not exist. JIT mode previously and continues to generate errors as expected. --- .../behavior/component-stylesheets_spec.ts | 39 +++++++++++++++++++ .../behavior/component-templates_spec.ts | 33 ++++++++++++++++ .../build/src/tools/angular/angular-host.ts | 3 ++ 3 files changed, 75 insertions(+) create mode 100644 packages/angular/build/src/builders/application/tests/behavior/component-templates_spec.ts diff --git a/packages/angular/build/src/builders/application/tests/behavior/component-stylesheets_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/component-stylesheets_spec.ts index 7853c3a920b0..675bf0a110fa 100644 --- a/packages/angular/build/src/builders/application/tests/behavior/component-stylesheets_spec.ts +++ b/packages/angular/build/src/builders/application/tests/behavior/component-stylesheets_spec.ts @@ -44,5 +44,44 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { harness.expectFile('dist/browser/main.js').content.not.toContain('variables'); }); + + it('should generater an error for a missing stylesheet with AOT', async () => { + await harness.modifyFile('src/app/app.component.ts', (content) => { + return content.replace('./app.component.css', './not-present.css'); + }); + + harness.useTarget('build', { + ...BASE_OPTIONS, + }); + + const { result, logs } = await harness.executeOnce({ outputLogsOnFailure: false }); + expect(result?.success).toBeFalse(); + expect(logs).toContain( + jasmine.objectContaining({ + level: 'error', + message: jasmine.stringContaining(`Could not find stylesheet file './not-present.css'`), + }), + ); + }); + + it('should generater an error for a missing stylesheet with JIT', async () => { + await harness.modifyFile('src/app/app.component.ts', (content) => { + return content.replace('./app.component.css', './not-present.css'); + }); + + harness.useTarget('build', { + ...BASE_OPTIONS, + aot: false, + }); + + const { result, logs } = await harness.executeOnce({ outputLogsOnFailure: false }); + expect(result?.success).toBeFalse(); + expect(logs).toContain( + jasmine.objectContaining({ + level: 'error', + message: jasmine.stringContaining('Could not resolve'), + }), + ); + }); }); }); diff --git a/packages/angular/build/src/builders/application/tests/behavior/component-templates_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/component-templates_spec.ts new file mode 100644 index 000000000000..26caf0c35439 --- /dev/null +++ b/packages/angular/build/src/builders/application/tests/behavior/component-templates_spec.ts @@ -0,0 +1,33 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { buildApplication } from '../../index'; +import { APPLICATION_BUILDER_INFO, BASE_OPTIONS, describeBuilder } from '../setup'; + +describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { + describe('Behavior: "Component Templates"', () => { + it('should generater an error for a missing template', async () => { + await harness.modifyFile('src/app/app.component.ts', (content) => { + return content.replace('./app.component.html', './not-present.html'); + }); + + harness.useTarget('build', { + ...BASE_OPTIONS, + }); + + const { result, logs } = await harness.executeOnce({ outputLogsOnFailure: false }); + expect(result?.success).toBeFalse(); + expect(logs).toContain( + jasmine.objectContaining({ + level: 'error', + message: jasmine.stringContaining(`Could not find template file './not-present.html'`), + }), + ); + }); + }); +}); diff --git a/packages/angular/build/src/tools/angular/angular-host.ts b/packages/angular/build/src/tools/angular/angular-host.ts index 103b3e37ac68..38c096f67674 100644 --- a/packages/angular/build/src/tools/angular/angular-host.ts +++ b/packages/angular/build/src/tools/angular/angular-host.ts @@ -208,6 +208,9 @@ export function createAngularCompilerHost( host.resourceNameToFileName = function (resourceName, containingFile) { const resolvedPath = nodePath.join(nodePath.dirname(containingFile), resourceName); + if (!this.fileExists(resolvedPath)) { + return null; + } // All resource names that have template file extensions are assumed to be templates // TODO: Update compiler to provide the resource type to avoid extension matching here. From 5c0d76ef92127fad3ab85a2a28ad6fc46caf32f3 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 13:45:31 -0400 Subject: [PATCH 037/160] docs: release notes for the v19.2.4 release --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5578999cfb84..c7e491ec7cbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ + + +# 19.2.4 (2025-03-19) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------- | +| [0a4e96bda](https://github.com/angular/angular-cli/commit/0a4e96bda054876332c5603a3bc972c3ec1eb0bf) | fix | replace `@angular/platform-browser-dynamic` with `@angular/platform-browser` | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | +| [b0b643e46](https://github.com/angular/angular-cli/commit/b0b643e46f1009be66423fdff568d042717c5e2b) | fix | ensure errors for missing component resources | +| [2cd763e89](https://github.com/angular/angular-cli/commit/2cd763e893788cfb38260d48eef40afa574a6a70) | fix | ensure relative karma stack traces for test failures | + + + # 17.3.13 (2025-03-13) From d5126353b92a6d6d62336f205b643c6554397eca Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 13:49:30 -0400 Subject: [PATCH 038/160] test: correct test description typos Correct several small test description typos for the application builder. --- .../application/tests/behavior/component-stylesheets_spec.ts | 4 ++-- .../application/tests/behavior/component-templates_spec.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/angular/build/src/builders/application/tests/behavior/component-stylesheets_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/component-stylesheets_spec.ts index 675bf0a110fa..ecc460bcb405 100644 --- a/packages/angular/build/src/builders/application/tests/behavior/component-stylesheets_spec.ts +++ b/packages/angular/build/src/builders/application/tests/behavior/component-stylesheets_spec.ts @@ -45,7 +45,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { harness.expectFile('dist/browser/main.js').content.not.toContain('variables'); }); - it('should generater an error for a missing stylesheet with AOT', async () => { + it('should generate an error for a missing stylesheet with AOT', async () => { await harness.modifyFile('src/app/app.component.ts', (content) => { return content.replace('./app.component.css', './not-present.css'); }); @@ -64,7 +64,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { ); }); - it('should generater an error for a missing stylesheet with JIT', async () => { + it('should generate an error for a missing stylesheet with JIT', async () => { await harness.modifyFile('src/app/app.component.ts', (content) => { return content.replace('./app.component.css', './not-present.css'); }); diff --git a/packages/angular/build/src/builders/application/tests/behavior/component-templates_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/component-templates_spec.ts index 26caf0c35439..687ed78dc74c 100644 --- a/packages/angular/build/src/builders/application/tests/behavior/component-templates_spec.ts +++ b/packages/angular/build/src/builders/application/tests/behavior/component-templates_spec.ts @@ -11,7 +11,7 @@ import { APPLICATION_BUILDER_INFO, BASE_OPTIONS, describeBuilder } from '../setu describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { describe('Behavior: "Component Templates"', () => { - it('should generater an error for a missing template', async () => { + it('should generate an error for a missing template', async () => { await harness.modifyFile('src/app/app.component.ts', (content) => { return content.replace('./app.component.html', './not-present.html'); }); From b96dd54741b8259285a59eaf232cd30e7e0965bb Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 14:43:11 -0400 Subject: [PATCH 039/160] build: update tsconfig ECMAScript version to ES2023 With Node.js v20 now the minimum supported version for Angular v20, the ECMAScript version used with TypeScript can be increased to ES2023. This change applies to the build process for the CLI packages themselves and is not related to the configuration used within projects. --- tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 4df52a94fea7..f00528f2698f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,8 @@ "isolatedModules": true, "skipLibCheck": true, "strict": true, - "target": "es2022", - "lib": ["es2022"], + "target": "es2023", + "lib": ["es2023"], "rootDir": ".", "rootDirs": [".", "./dist-schema/bin/"], "paths": { From 8d715fa948d432b18d06bcf42eed3a7681383523 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 14:16:25 -0400 Subject: [PATCH 040/160] fix(@schematics/angular): generate directives without a .directive extension/type To align with the updated style guide, Angular v20 will generate services without a `.directive` file extension type for all directive related files by default. Projects will automatically use this naming convention. Projects can however opt-out by setting the `type` option to `Directive` for the directive schematic. This can be done as a default in the `angular.json` or directly on the commandline via `--type=Directive` when executing `ng generate`. As an example, `example.directive.ts` will now be named `example.ts`. Additionally, the TypeScript class name will be `Example` instead of the previous `ExampleDirective`. --- ...ame@dasherize__.directive.spec.ts.template | 8 --- ...rize__.__type@dasherize__.spec.ts.template | 8 +++ ...asherize__.__type@dasherize__.ts.template} | 2 +- .../schematics/angular/directive/index.ts | 31 ++-------- .../angular/directive/index_spec.ts | 56 ++++++++++++------- .../schematics/angular/directive/schema.json | 4 ++ .../generate/directive/directive-basic.ts | 4 +- .../generate/directive/directive-prefix.ts | 13 +---- 8 files changed, 61 insertions(+), 65 deletions(-) delete mode 100644 packages/schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.spec.ts.template create mode 100644 packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.spec.ts.template rename packages/schematics/angular/directive/files/{__name@dasherize@if-flat__/__name@dasherize__.directive.ts.template => __name@dasherize__.__type@dasherize__.ts.template} (73%) diff --git a/packages/schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.spec.ts.template b/packages/schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.spec.ts.template deleted file mode 100644 index d8e001680f09..000000000000 --- a/packages/schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.spec.ts.template +++ /dev/null @@ -1,8 +0,0 @@ -import { <%= classify(name) %>Directive } from './<%= dasherize(name) %>.directive'; - -describe('<%= classify(name) %>Directive', () => { - it('should create an instance', () => { - const directive = new <%= classify(name) %>Directive(); - expect(directive).toBeTruthy(); - }); -}); diff --git a/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.spec.ts.template b/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.spec.ts.template new file mode 100644 index 000000000000..59bddc63660a --- /dev/null +++ b/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.spec.ts.template @@ -0,0 +1,8 @@ +import { <%= classify(name) %><%= classify(type) %> } from './<%= dasherize(name) %><%= type ? '.' + dasherize(type) : '' %>'; + +describe('<%= classify(name) %><%= classify(type) %>', () => { + it('should create an instance', () => { + const directive = new <%= classify(name) %><%= classify(type) %>(); + expect(directive).toBeTruthy(); + }); +}); diff --git a/packages/schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.ts.template b/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.ts.template similarity index 73% rename from packages/schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.ts.template rename to packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.ts.template index a63130fdf334..4e55f9d19e6b 100644 --- a/packages/schematics/angular/directive/files/__name@dasherize@if-flat__/__name@dasherize__.directive.ts.template +++ b/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.ts.template @@ -4,7 +4,7 @@ import { Directive } from '@angular/core'; selector: '[<%= selector %>]'<% if(!standalone) {%>, standalone: false<%}%> }) -export class <%= classify(name) %>Directive { +export class <%= classify(name) %><%= classify(type) %> { constructor() { } diff --git a/packages/schematics/angular/directive/index.ts b/packages/schematics/angular/directive/index.ts index 97e6a9deaa18..0ef5e0c9ff8e 100644 --- a/packages/schematics/angular/directive/index.ts +++ b/packages/schematics/angular/directive/index.ts @@ -6,22 +6,10 @@ * found in the LICENSE file at https://angular.dev/license */ -import { - Rule, - SchematicsException, - Tree, - apply, - applyTemplates, - chain, - filter, - mergeWith, - move, - noop, - strings, - url, -} from '@angular-devkit/schematics'; +import { Rule, SchematicsException, Tree, chain, strings } from '@angular-devkit/schematics'; import { addDeclarationToNgModule } from '../utility/add-declaration-to-ng-module'; import { findModuleFromOptions } from '../utility/find-module'; +import { generateFromFiles } from '../utility/generate-from-files'; import { parseName } from '../utility/parse-name'; import { validateClassName, validateHtmlSelector } from '../utility/validation'; import { buildDefaultPath, getWorkspace } from '../utility/workspace'; @@ -52,6 +40,9 @@ export default function (options: DirectiveOptions): Rule { options.module = findModuleFromOptions(host, options); + // Schematic templates require a defined type value + options.type ??= ''; + const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; @@ -60,23 +51,13 @@ export default function (options: DirectiveOptions): Rule { validateHtmlSelector(options.selector); validateClassName(strings.classify(options.name)); - const templateSource = apply(url('./files'), [ - options.skipTests ? filter((path) => !path.endsWith('.spec.ts.template')) : noop(), - applyTemplates({ - ...strings, - 'if-flat': (s: string) => (options.flat ? '' : s), - ...options, - }), - move(parsedPath.path), - ]); - return chain([ addDeclarationToNgModule({ type: 'directive', ...options, }), - mergeWith(templateSource), + generateFromFiles(options), ]); }; } diff --git a/packages/schematics/angular/directive/index_spec.ts b/packages/schematics/angular/directive/index_spec.ts index 1fbdad0ef713..affb582fbb67 100644 --- a/packages/schematics/angular/directive/index_spec.ts +++ b/packages/schematics/angular/directive/index_spec.ts @@ -50,15 +50,15 @@ describe('Directive Schematic', () => { const tree = await schematicRunner.runSchematic('directive', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.directive.spec.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo.directive.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo.ts'); }); it('should converts dash-cased-name to a camelCasedSelector', async () => { const options = { ...defaultOptions, name: 'my-dir' }; const tree = await schematicRunner.runSchematic('directive', options, appTree); - const content = tree.readContent('/projects/bar/src/app/my-dir.directive.ts'); + const content = tree.readContent('/projects/bar/src/app/my-dir.ts'); expect(content).toMatch(/selector: '\[appMyDir\]'/); }); @@ -66,7 +66,7 @@ describe('Directive Schematic', () => { const options = { ...defaultOptions, name: 'sub/test' }; appTree = await schematicRunner.runSchematic('directive', options, appTree); - const content = appTree.readContent('/projects/bar/src/app/sub/test.directive.ts'); + const content = appTree.readContent('/projects/bar/src/app/sub/test.ts'); expect(content).toMatch(/selector: '\[appTest\]'/); }); @@ -74,7 +74,7 @@ describe('Directive Schematic', () => { const options = { ...defaultOptions, prefix: 'pre' }; const tree = await schematicRunner.runSchematic('directive', options, appTree); - const content = tree.readContent('/projects/bar/src/app/foo.directive.ts'); + const content = tree.readContent('/projects/bar/src/app/foo.ts'); expect(content).toMatch(/selector: '\[preFoo\]'/); }); @@ -82,7 +82,7 @@ describe('Directive Schematic', () => { const options = { ...defaultOptions, prefix: undefined }; const tree = await schematicRunner.runSchematic('directive', options, appTree); - const content = tree.readContent('/projects/bar/src/app/foo.directive.ts'); + const content = tree.readContent('/projects/bar/src/app/foo.ts'); expect(content).toMatch(/selector: '\[appFoo\]'/); }); @@ -90,7 +90,7 @@ describe('Directive Schematic', () => { const options = { ...defaultOptions, prefix: '' }; const tree = await schematicRunner.runSchematic('directive', options, appTree); - const content = tree.readContent('/projects/bar/src/app/foo.directive.ts'); + const content = tree.readContent('/projects/bar/src/app/foo.ts'); expect(content).toMatch(/selector: '\[foo\]'/); }); @@ -99,16 +99,16 @@ describe('Directive Schematic', () => { const tree = await schematicRunner.runSchematic('directive', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo.directive.ts'); - expect(files).not.toContain('/projects/bar/src/app/foo.directive.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo.ts'); + expect(files).not.toContain('/projects/bar/src/app/foo.spec.ts'); }); it('should create a standalone directive', async () => { const options = { ...defaultOptions, standalone: true }; const tree = await schematicRunner.runSchematic('directive', options, appTree); - const directiveContent = tree.readContent('/projects/bar/src/app/foo.directive.ts'); + const directiveContent = tree.readContent('/projects/bar/src/app/foo.ts'); expect(directiveContent).not.toContain('standalone'); - expect(directiveContent).toContain('class FooDirective'); + expect(directiveContent).toContain('class Foo'); }); it('should error when class name contains invalid characters', async () => { @@ -119,6 +119,24 @@ describe('Directive Schematic', () => { ).toBeRejectedWithError('Class name "404" is invalid.'); }); + it('should respect the type option', async () => { + const options = { ...defaultOptions, type: 'Directive' }; + const tree = await schematicRunner.runSchematic('directive', options, appTree); + const content = tree.readContent('/projects/bar/src/app/foo.directive.ts'); + const testContent = tree.readContent('/projects/bar/src/app/foo.directive.spec.ts'); + expect(content).toContain('export class FooDirective'); + expect(testContent).toContain("describe('FooDirective'"); + }); + + it('should allow empty string in the type option', async () => { + const options = { ...defaultOptions, type: '' }; + const tree = await schematicRunner.runSchematic('directive', options, appTree); + const content = tree.readContent('/projects/bar/src/app/foo.ts'); + const testContent = tree.readContent('/projects/bar/src/app/foo.spec.ts'); + expect(content).toContain('export class Foo'); + expect(testContent).toContain("describe('Foo'"); + }); + describe('standalone=false', () => { const defaultNonStandaloneOptions: DirectiveOptions = { ...defaultOptions, @@ -139,11 +157,11 @@ describe('Directive Schematic', () => { const tree = await schematicRunner.runSchematic('directive', options, appTree); const files = tree.files; - expect(files).toContain('/projects/baz/src/app/foo.directive.spec.ts'); - expect(files).toContain('/projects/baz/src/app/foo.directive.ts'); + expect(files).toContain('/projects/baz/src/app/foo.spec.ts'); + expect(files).toContain('/projects/baz/src/app/foo.ts'); const moduleContent = tree.readContent('/projects/baz/src/app/app.module.ts'); - expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo.directive'/); - expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooDirective\r?\n/m); + expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo'/); + expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+Foo\r?\n/m); }); it('should respect the sourceRoot value', async () => { @@ -167,7 +185,7 @@ describe('Directive Schematic', () => { appTree, ); - expect(appTree.files).toContain('/projects/baz/custom/app/foo.directive.ts'); + expect(appTree.files).toContain('/projects/baz/custom/app/foo.ts'); }); it('should find the closest module', async () => { @@ -188,7 +206,7 @@ describe('Directive Schematic', () => { const tree = await schematicRunner.runSchematic('directive', options, appTree); const fooModuleContent = tree.readContent(fooModule); - expect(fooModuleContent).toMatch(/import { FooDirective } from '.\/foo.directive'/); + expect(fooModuleContent).toMatch(/import { Foo } from '.\/foo'/); }); it('should export the directive', async () => { @@ -196,7 +214,7 @@ describe('Directive Schematic', () => { const tree = await schematicRunner.runSchematic('directive', options, appTree); const appModuleContent = tree.readContent('/projects/baz/src/app/app.module.ts'); - expect(appModuleContent).toMatch(/exports: \[\n(\s*) {2}FooDirective\n\1\]/); + expect(appModuleContent).toMatch(/exports: \[\n(\s*) {2}Foo\n\1\]/); }); it('should import into a specified module', async () => { @@ -205,7 +223,7 @@ describe('Directive Schematic', () => { const tree = await schematicRunner.runSchematic('directive', options, appTree); const appModule = tree.readContent('/projects/baz/src/app/app.module.ts'); - expect(appModule).toMatch(/import { FooDirective } from '.\/foo.directive'/); + expect(appModule).toMatch(/import { Foo } from '.\/foo'/); }); it('should fail if specified module does not exist', async () => { diff --git a/packages/schematics/angular/directive/schema.json b/packages/schematics/angular/directive/schema.json index 753c520774ee..4a4041604fb0 100644 --- a/packages/schematics/angular/directive/schema.json +++ b/packages/schematics/angular/directive/schema.json @@ -80,6 +80,10 @@ "type": "boolean", "default": false, "description": "Automatically export the directive from the specified NgModule, making it accessible to other modules in the application." + }, + "type": { + "type": "string", + "description": "Append a custom type to the directive's filename. For example, if you set the type to `directive`, the file will be named `example.directive.ts`." } }, "required": ["name", "project"] diff --git a/tests/legacy-cli/e2e/tests/generate/directive/directive-basic.ts b/tests/legacy-cli/e2e/tests/generate/directive/directive-basic.ts index 3706743c392b..9ad00dfa22a3 100644 --- a/tests/legacy-cli/e2e/tests/generate/directive/directive-basic.ts +++ b/tests/legacy-cli/e2e/tests/generate/directive/directive-basic.ts @@ -6,8 +6,8 @@ export default function () { const directiveDir = join('src', 'app'); return ( ng('generate', 'directive', 'test-directive') - .then(() => expectFileToExist(join(directiveDir, 'test-directive.directive.ts'))) - .then(() => expectFileToExist(join(directiveDir, 'test-directive.directive.spec.ts'))) + .then(() => expectFileToExist(join(directiveDir, 'test-directive.ts'))) + .then(() => expectFileToExist(join(directiveDir, 'test-directive.spec.ts'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) diff --git a/tests/legacy-cli/e2e/tests/generate/directive/directive-prefix.ts b/tests/legacy-cli/e2e/tests/generate/directive/directive-prefix.ts index ce2d6da3e4f6..b0a95ce399cb 100644 --- a/tests/legacy-cli/e2e/tests/generate/directive/directive-prefix.ts +++ b/tests/legacy-cli/e2e/tests/generate/directive/directive-prefix.ts @@ -16,9 +16,7 @@ export default function () { }), ) .then(() => ng('generate', 'directive', 'test2-directive')) - .then(() => - expectFileToMatch(join(directiveDir, 'test2-directive.directive.ts'), /selector: '\[preW/), - ) + .then(() => expectFileToMatch(join(directiveDir, 'test2-directive.ts'), /selector: '\[preW/)) .then(() => ng('generate', 'application', 'app-two', '--skip-install')) .then(() => useCIDefaults('app-two')) .then(() => useCIChrome('app-two', './projects/app-two')) @@ -33,17 +31,12 @@ export default function () { .then(() => ng('generate', 'directive', '--skip-import', 'test3-directive')) .then(() => process.chdir('../..')) .then(() => - expectFileToMatch( - join('projects', 'app-two', 'test3-directive.directive.ts'), - /selector: '\[preW/, - ), + expectFileToMatch(join('projects', 'app-two', 'test3-directive.ts'), /selector: '\[preW/), ) .then(() => process.chdir('src/app')) .then(() => ng('generate', 'directive', 'test-directive')) .then(() => process.chdir('../..')) - .then(() => - expectFileToMatch(join(directiveDir, 'test-directive.directive.ts'), /selector: '\[preP/), - ) + .then(() => expectFileToMatch(join(directiveDir, 'test-directive.ts'), /selector: '\[preP/)) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) From cbfb88853d20af7aacbd70cdb81eea0d6a79bec6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 19 Mar 2025 19:36:45 +0000 Subject: [PATCH 041/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 44 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 36 +- package.json | 30 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 348 ++++++++---------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 11 files changed, 240 insertions(+), 280 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 1f3261e0e854..c07379bfd3bc 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@47572aba6019f368057c00966ac7ce354b1d65bc + - uses: angular/dev-infra/github-actions/branch-manager@27078026111b01a7202449e9788ce38f2b2e103f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f02abd9d59ae..9603e67a1a20 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -57,11 +57,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -81,13 +81,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -102,7 +102,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -123,13 +123,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -145,13 +145,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -163,13 +163,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -197,11 +197,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index b4ab1d44985b..83a9c371e4a9 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@47572aba6019f368057c00966ac7ce354b1d65bc + - uses: angular/dev-infra/github-actions/commit-message-based-labels@27078026111b01a7202449e9788ce38f2b2e103f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@47572aba6019f368057c00966ac7ce354b1d65bc + - uses: angular/dev-infra/github-actions/post-approval-changes@27078026111b01a7202449e9788ce38f2b2e103f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 5e922d9c70f0..a7e96ea37682 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@47572aba6019f368057c00966ac7ce354b1d65bc + - uses: angular/dev-infra/github-actions/feature-request@27078026111b01a7202449e9788ce38f2b2e103f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index de3d47cc389e..1fae8b3d706d 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 5e2afb76122a..05e7102795ac 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup ESLint Caching uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/linting/licenses@27078026111b01a7202449e9788ce38f2b2e103f - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,7 +130,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -149,13 +149,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -172,12 +172,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@47572aba6019f368057c00966ac7ce354b1d65bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index 525a50f7bb0d..b550ca0638f7 100644 --- a/package.json +++ b/package.json @@ -46,21 +46,21 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "20.0.0-next.2", - "@angular/cdk": "20.0.0-next.1", - "@angular/common": "20.0.0-next.2", - "@angular/compiler": "20.0.0-next.2", - "@angular/compiler-cli": "20.0.0-next.2", - "@angular/core": "20.0.0-next.2", - "@angular/forms": "20.0.0-next.2", - "@angular/localize": "20.0.0-next.2", - "@angular/material": "20.0.0-next.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9fd3adb2e8b9a0fef1ba5bc905a900e018445e05", - "@angular/platform-browser": "20.0.0-next.2", - "@angular/platform-browser-dynamic": "20.0.0-next.2", - "@angular/platform-server": "20.0.0-next.2", - "@angular/router": "20.0.0-next.2", - "@angular/service-worker": "20.0.0-next.2", + "@angular/animations": "20.0.0-next.3", + "@angular/cdk": "20.0.0-next.2", + "@angular/common": "20.0.0-next.3", + "@angular/compiler": "20.0.0-next.3", + "@angular/compiler-cli": "20.0.0-next.3", + "@angular/core": "20.0.0-next.3", + "@angular/forms": "20.0.0-next.3", + "@angular/localize": "20.0.0-next.3", + "@angular/material": "20.0.0-next.2", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#d25ced20c12ad010c2b5b560acb78065f8d6564e", + "@angular/platform-browser": "20.0.0-next.3", + "@angular/platform-browser-dynamic": "20.0.0-next.3", + "@angular/platform-server": "20.0.0-next.3", + "@angular/router": "20.0.0-next.3", + "@angular/service-worker": "20.0.0-next.3", "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "8.0.3", "@eslint/compat": "1.2.7", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 7f579f5deadd..7f3db2c1203f 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "20.0.0-next.2", - "@angular/compiler": "20.0.0-next.2", - "@angular/core": "20.0.0-next.2", - "@angular/platform-browser": "20.0.0-next.2", - "@angular/platform-server": "20.0.0-next.2", - "@angular/router": "20.0.0-next.2", + "@angular/common": "20.0.0-next.3", + "@angular/compiler": "20.0.0-next.3", + "@angular/core": "20.0.0-next.3", + "@angular/platform-browser": "20.0.0-next.3", + "@angular/platform-server": "20.0.0-next.3", + "@angular/router": "20.0.0-next.3", "@schematics/angular": "workspace:*" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index f4aa7645c974..2ae86d646b6c 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", - "@angular/compiler": "20.0.0-next.2", - "@angular/compiler-cli": "20.0.0-next.2", + "@angular/compiler": "20.0.0-next.3", + "@angular/compiler-cli": "20.0.0-next.3", "typescript": "5.8.2", "webpack": "5.98.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d81eec8955db..ee57ab9920e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,50 +15,50 @@ importers: .: devDependencies: '@angular/animations': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/core@20.0.0-next.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/cdk': - specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/common': specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) + version: 20.0.0-next.2(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/common': + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/core@20.0.0-next.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3 '@angular/compiler-cli': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) '@angular/core': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/localize': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(@angular/compiler@20.0.0-next.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(@angular/compiler@20.0.0-next.3) '@angular/material': - specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/cdk@20.0.0-next.1(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/forms@20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2))(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2) + specifier: 20.0.0-next.2 + version: 20.0.0-next.2(l4pblaphm2g3pnybzkb7drskpi) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#9fd3adb2e8b9a0fef1ba5bc905a900e018445e05 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9fd3adb2e8b9a0fef1ba5bc905a900e018445e05(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#d25ced20c12ad010c2b5b560acb78065f8d6564e + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d25ced20c12ad010c2b5b560acb78065f8d6564e(encoding@0.1.13) '@angular/platform-browser': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/compiler@20.0.0-next.2)(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))) '@angular/platform-server': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/compiler@20.0.0-next.2)(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/router': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.25.0 version: 1.25.0 @@ -440,7 +440,7 @@ importers: version: 4.2.2 ng-packagr: specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) postcss: specifier: 8.5.3 version: 8.5.3 @@ -521,23 +521,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/core@20.0.0-next.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3 '@angular/core': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-server': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/compiler@20.0.0-next.2)(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/router': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -759,7 +759,7 @@ importers: version: 3.0.3 ng-packagr: specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: specifier: 7.5.0 version: 7.5.0 @@ -856,11 +856,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/core@20.0.0-next.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3 '@angular/compiler-cli': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) typescript: specifier: 5.8.2 version: 5.8.2 @@ -895,131 +895,126 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@20.0.0-next.2': - resolution: {integrity: sha512-4BDWr2uA/Z67Y2jNoCPius0qSDNNX5ezte2VzK0F7+v54g8FQlzHb2uZuPm7jnKMxOzoHyWHnUq1CGgH15myuQ==} + '@angular/animations@20.0.0-next.3': + resolution: {integrity: sha512-hperYaQGLz1Y2O7CRVfp3ea+nztPqM//C1VdBHFXt3BH2E+IKYnMQilIc8KEwU56MYS0JYdcWYzM4/NYiV4ruA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 20.0.0-next.2 + '@angular/core': 20.0.0-next.3 - '@angular/cdk@20.0.0-next.1': - resolution: {integrity: sha512-nm71L2C13lw7zv5BQ30ZeXyUwKHErVYoR02RuDRcGQFh61/PKZNaIaJHOFqgT5bMpPrlbRvUGKgYhbbYYqc44A==} + '@angular/cdk@20.0.0-next.2': + resolution: {integrity: sha512-yq50dLK9LW8byFneLG8S37CtYCHrRE3gKz0zcW+2t4o4LgRpZw/pS9mkpzF79xGmeH+Bidgm6CgzXpKPAO+SNA==} peerDependencies: '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@20.0.0-next.2': - resolution: {integrity: sha512-ojFSGYhIkuxEh6vjSpCiappo6xz1SXtgm5WIaYujzMnorQfeHXViSR2XxoFim5laWmtkO1bxn4udcXRXGwg7bQ==} + '@angular/common@20.0.0-next.3': + resolution: {integrity: sha512-Ie5GhDhxSXTKw/nfZM/KIYSiEw1Nry/7tVoqpnDwRE12OkhyDCn+gW9X5ag42wNECCi99p+dnZuqnramZriV3A==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 20.0.0-next.2 + '@angular/core': 20.0.0-next.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.0.0-next.2': - resolution: {integrity: sha512-AzdcEIlRb7Fi+jXRzHVkjx0KRWWnK5gtOPj6/miQvvsSIGQ9afie2ZjGAJUoRgBGLlQ6cpCiEy7FmTKo/22eDw==} + '@angular/compiler-cli@20.0.0-next.3': + resolution: {integrity: sha512-TRAEMOQG6z/1GzmCJ6Khzdt0teDgC892O9unW1BBiCQqABjdb3/ahdiIIrK2TzsJPT9USzWfzT2jugFpaPwOgQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-next.2 + '@angular/compiler': 20.0.0-next.3 typescript: 5.8.2 - '@angular/compiler@20.0.0-next.2': - resolution: {integrity: sha512-wHXWSpAKqYVklB1c1ju1HBKnW2dnjVm2fYB9TiwEO0vh5LWXYJIF5e7prFZTyUzk0f7p+XCTeAB5nWg2/o02Ig==} + '@angular/compiler@20.0.0-next.3': + resolution: {integrity: sha512-gofIOMEFtyFZTTAvU/GTra2U1D2/tck2aQqInQVykwbSAezfnCfEztDmd3DgscbHIr/KzovsiL8guMTTjMGUZA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} - peerDependencies: - '@angular/core': 20.0.0-next.2 - peerDependenciesMeta: - '@angular/core': - optional: true - '@angular/core@20.0.0-next.2': - resolution: {integrity: sha512-nF1yPPXO0EZQmNsvR7p3KCPUnxVQxHEVNIBunBCoOia5DEi9E7l+VkMT/2Bnp/7h/ZCdOst4A3Uj4XqpNhUYtA==} + '@angular/core@20.0.0-next.3': + resolution: {integrity: sha512-UYIUKeDB6UkTrYd5pCurIJav7gK7vwsbzH8DdfUrI32Zj7Yfyn5r7odG1VDIOTiCS54sK0D7rZLa8PtWD8QR6A==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/compiler': 20.0.0-next.2 + '@angular/compiler': 20.0.0-next.3 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: '@angular/compiler': optional: true - '@angular/forms@20.0.0-next.2': - resolution: {integrity: sha512-Sd6dq+cAdBIrRlKreNEXTl12aQOnXrTiU108Ll+AnSMdAvpqOqoLWkE5vXAHLXcfS0dacerMVFR2s6+4x3DJJQ==} + '@angular/forms@20.0.0-next.3': + resolution: {integrity: sha512-Tv4H3R6XKyrROZXLHqiUB2LjB2dQgwvFFbp6dUqN4pnsKmgx0PbZJNnA3IwBo+9ONnNZZe9JbDRu6Z4+BZa5Dg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 20.0.0-next.2 - '@angular/core': 20.0.0-next.2 - '@angular/platform-browser': 20.0.0-next.2 + '@angular/common': 20.0.0-next.3 + '@angular/core': 20.0.0-next.3 + '@angular/platform-browser': 20.0.0-next.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@20.0.0-next.2': - resolution: {integrity: sha512-V9BMrHXfo3HPWp07fbeVgpy4xiMi8bcuTAhxKyKPqXfPA4MX/8Y8FGIYxcTLFqzPNBu+7qe0OgtoQT502MrJjA==} + '@angular/localize@20.0.0-next.3': + resolution: {integrity: sha512-Kmz89nDEmFwcXy+yDeXAqDN+MTiv0Xt60QyCIwinmJVXeiKa0cE5ecEjUPThmOGRnEvIuuOSAV6lzsW7k7RzKA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-next.2 - '@angular/compiler-cli': 20.0.0-next.2 + '@angular/compiler': 20.0.0-next.3 + '@angular/compiler-cli': 20.0.0-next.3 - '@angular/material@20.0.0-next.1': - resolution: {integrity: sha512-otR0S79z5JGFYVV+XbRbDJWF33BK2F/jNKQnjVaVHFaepBU6tLvjYpQL8nM34sXuzAIVrEn/wjv4bAJkxWRXOw==} + '@angular/material@20.0.0-next.2': + resolution: {integrity: sha512-rF6JHrSPBgNWidQ6vpFrdO35lMdkb3o/yeAq7shtmV9beUdproavGqniBriviNO60aGJvRl2bXeZNFNP8zUWJQ==} peerDependencies: - '@angular/cdk': 20.0.0-next.1 + '@angular/cdk': 20.0.0-next.2 '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/forms': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9fd3adb2e8b9a0fef1ba5bc905a900e018445e05': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9fd3adb2e8b9a0fef1ba5bc905a900e018445e05} - version: 0.0.0-47572aba6019f368057c00966ac7ce354b1d65bc + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d25ced20c12ad010c2b5b560acb78065f8d6564e': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d25ced20c12ad010c2b5b560acb78065f8d6564e} + version: 0.0.0-27078026111b01a7202449e9788ce38f2b2e103f hasBin: true - '@angular/platform-browser-dynamic@20.0.0-next.2': - resolution: {integrity: sha512-S1BH1LPVdc3nspXwzPPIgc/U5ZMidzzJ7bSO8+9bmWtfsMgC8dLFjXnUbEmprwJe/Lw8l6lODTnfBgZXfsSo1w==} + '@angular/platform-browser-dynamic@20.0.0-next.3': + resolution: {integrity: sha512-i1UbOtTXFEurf/qX4zRuTPyrn+M35JZQZjn9PMyzVgDtpcZlEBpvcSL8ctogDxYXkYd6/rEByPyFdTvH8YN+Ug==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 20.0.0-next.2 - '@angular/compiler': 20.0.0-next.2 - '@angular/core': 20.0.0-next.2 - '@angular/platform-browser': 20.0.0-next.2 + '@angular/common': 20.0.0-next.3 + '@angular/compiler': 20.0.0-next.3 + '@angular/core': 20.0.0-next.3 + '@angular/platform-browser': 20.0.0-next.3 - '@angular/platform-browser@20.0.0-next.2': - resolution: {integrity: sha512-JXmDlUcq4pPHznyKVf4XtsWn7syt1X+zQCNdef+e7ZHwixFlsJtD+akj1bF8mhXvd2YACgkgN0sXGPiGZTHeBQ==} + '@angular/platform-browser@20.0.0-next.3': + resolution: {integrity: sha512-rtBwaE0suHAHn5KpFIP6LKGRCIqCg9qPjQQrpgR4Yguke0peNFdY7j6k0oga+vd8xjxrRZftjXcC6cpK5itQGw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 20.0.0-next.2 - '@angular/common': 20.0.0-next.2 - '@angular/core': 20.0.0-next.2 + '@angular/animations': 20.0.0-next.3 + '@angular/common': 20.0.0-next.3 + '@angular/core': 20.0.0-next.3 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@20.0.0-next.2': - resolution: {integrity: sha512-JxWC2cEceHZH7CZ+IzdwffvFvkhHKiYkdqZU2+Fy1a9piqnpm4abE02ayXhAhw1xt80BZNYr9Q8xBO2QNwGIrA==} + '@angular/platform-server@20.0.0-next.3': + resolution: {integrity: sha512-1s71I0Oir60JQz/ewxD9G64YTsgns+f8dIpSCUYIMBZWOWEddjUQLmTu58bTRZiah7stzze0SuPHzwdKtlfPyQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 20.0.0-next.2 - '@angular/compiler': 20.0.0-next.2 - '@angular/core': 20.0.0-next.2 - '@angular/platform-browser': 20.0.0-next.2 + '@angular/common': 20.0.0-next.3 + '@angular/compiler': 20.0.0-next.3 + '@angular/core': 20.0.0-next.3 + '@angular/platform-browser': 20.0.0-next.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@20.0.0-next.2': - resolution: {integrity: sha512-WdykD+USpP/Wxcv2fwASFuHUAU6pflSs4gFjT6hoXVOrN5JzSzBo4abE4Jn7S3i+LBV+znUeUHs0wx/mwsq2Ww==} + '@angular/router@20.0.0-next.3': + resolution: {integrity: sha512-Nr2By+GuKoHkA4aUFCfJQmMQK73cETreD50iDE+ZeiRhQL0cM8NgIYCOFsroG9Dk6xXiwETyIDuyVWx4vrE+qQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 20.0.0-next.2 - '@angular/core': 20.0.0-next.2 - '@angular/platform-browser': 20.0.0-next.2 + '@angular/common': 20.0.0-next.3 + '@angular/core': 20.0.0-next.3 + '@angular/platform-browser': 20.0.0-next.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@20.0.0-next.2': - resolution: {integrity: sha512-YH817tESXCUWIaSUBDUYNTqIUcXUqD7mG/WJI94de2hyCIaYBhxMyqo+IM/7OOKR0y44S5yzLJ4eGUyh5JUeiA==} + '@angular/service-worker@20.0.0-next.3': + resolution: {integrity: sha512-tsz/J+4vva9hkqythdLaz9VwAdJJFLQSEjDlPjRXEiR8asWnccoQWjOuhVtPgEljGwHU64URr7snRvKoYPmPUg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/core': 20.0.0-next.2 + '@angular/core': 20.0.0-next.3 rxjs: ^6.5.3 || ^7.4.0 '@babel/code-frame@7.26.2': @@ -1034,10 +1029,6 @@ packages: resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.9': - resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.26.10': resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} engines: {node: '>=6.9.0'} @@ -7955,30 +7946,30 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2)': + '@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/cdk@20.0.0-next.1(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(rxjs@7.8.2)': + '@angular/cdk@20.0.0-next.2(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: parse5: 7.2.1 - '@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2)': + '@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2)': + '@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2)': dependencies: - '@angular/compiler': 20.0.0-next.2(@angular/core@20.0.0-next.2) - '@babel/core': 7.26.9 + '@angular/compiler': 20.0.0-next.3 + '@babel/core': 7.26.10 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 convert-source-map: 1.9.0 @@ -7990,50 +7981,48 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.0.0-next.2(@angular/core@20.0.0-next.2)': + '@angular/compiler@20.0.0-next.3': dependencies: tslib: 2.8.1 - optionalDependencies: - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/core@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0)': + '@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 zone.js: 0.15.0 optionalDependencies: - '@angular/compiler': 20.0.0-next.2(@angular/core@20.0.0-next.2) + '@angular/compiler': 20.0.0-next.3 - '@angular/forms@20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2)': + '@angular/forms@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2) + '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@20.0.0-next.2(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(@angular/compiler@20.0.0-next.2)': + '@angular/localize@20.0.0-next.3(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(@angular/compiler@20.0.0-next.3)': dependencies: - '@angular/compiler': 20.0.0-next.2(@angular/core@20.0.0-next.2) - '@angular/compiler-cli': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2) - '@babel/core': 7.26.9 + '@angular/compiler': 20.0.0-next.3 + '@angular/compiler-cli': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) + '@babel/core': 7.26.10 '@types/babel__core': 7.20.5 tinyglobby: 0.2.12 yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@angular/material@20.0.0-next.1(@angular/cdk@20.0.0-next.1(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/forms@20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2))(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2)': + '@angular/material@20.0.0-next.2(l4pblaphm2g3pnybzkb7drskpi)': dependencies: - '@angular/cdk': 20.0.0-next.1(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/common': 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/forms': 20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2) - '@angular/platform-browser': 20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2) + '@angular/cdk': 20.0.0-next.2(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/forms': 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9fd3adb2e8b9a0fef1ba5bc905a900e018445e05(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d25ced20c12ad010c2b5b560acb78065f8d6564e(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.0(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 @@ -8050,43 +8039,43 @@ snapshots: transitivePeerDependencies: - encoding - '@angular/platform-browser-dynamic@20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/compiler@20.0.0-next.2)(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))': + '@angular/platform-browser-dynamic@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))': dependencies: - '@angular/common': 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/compiler': 20.0.0-next.2(@angular/core@20.0.0-next.2) - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2) + '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/compiler': 20.0.0-next.3 + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) tslib: 2.8.1 - '@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)': + '@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.0.0-next.2(@angular/core@20.0.0-next.2) + '@angular/animations': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/platform-server@20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/compiler@20.0.0-next.2)(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2)': + '@angular/platform-server@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/compiler': 20.0.0-next.2(@angular/core@20.0.0-next.2) - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2) + '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/compiler': 20.0.0-next.3 + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@20.0.0-next.2(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2)(@angular/platform-browser@20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2))(rxjs@7.8.2)': + '@angular/router@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2) - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.2(@angular/animations@20.0.0-next.2(@angular/core@20.0.0-next.2))(@angular/common@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2))(@angular/core@20.0.0-next.2) + '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@20.0.0-next.2(@angular/core@20.0.0-next.2)(rxjs@7.8.2)': + '@angular/service-worker@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -8118,26 +8107,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.26.9': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) - '@babel/helpers': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@10.0.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/generator@7.26.10': dependencies: '@babel/parser': 7.26.10 @@ -8212,15 +8181,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.10 - transitivePeerDependencies: - - supports-color - '@babel/helper-optimise-call-expression@7.25.9': dependencies: '@babel/types': 7.26.10 @@ -13715,9 +13675,9 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.1(@angular/compiler-cli@20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): + ng-packagr@20.0.0-next.1(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: - '@angular/compiler-cli': 20.0.0-next.2(@angular/compiler@20.0.0-next.2)(typescript@5.8.2) + '@angular/compiler-cli': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) '@rollup/plugin-json': 6.1.0(rollup@4.36.0) '@rollup/wasm-node': 4.36.0 ajv: 8.17.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 68b49cc7f14b..88f497ae8ae6 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#e584028b42528409c7b03bc106ff0b464ab15bd1", - "@angular/cdk": "github:angular/cdk-builds#f2ce6604298eead771fdacc88ac9cb68c0df809d", - "@angular/common": "github:angular/common-builds#01d50485fe83c22951bae8cc1a4671c348126422", - "@angular/compiler": "github:angular/compiler-builds#523dac1689489b3d7343550b4db895d0985a22b5", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#ff3ed451766275c62cd8318f0dc670b69bc2de2b", - "@angular/core": "github:angular/core-builds#10fc1e4ed3f0d68d3e5a88548b4c41161f8f163a", - "@angular/forms": "github:angular/forms-builds#25932d9c18080a8dd5abb247e699a41a3d8a3095", - "@angular/language-service": "github:angular/language-service-builds#7f8ee163b14ae930ee0eb048a814a3acd3892de6", - "@angular/localize": "github:angular/localize-builds#fcce120e4fecd67191852617c0943da9ecb634fa", - "@angular/material": "github:angular/material-builds#8acdf1d04acfdf819722953611164ae0766a597b", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#8b9f4812852729a6ba9e33125d51ad6e008aa491", - "@angular/platform-browser": "github:angular/platform-browser-builds#95eaabd4669a61c7969f0b38ec4324441cd84818", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#d0e03e61ff2a26d47ee227581f47b6f6902e5799", - "@angular/platform-server": "github:angular/platform-server-builds#c3f2e2235192a984e338a1a911bd1819d24b8916", - "@angular/router": "github:angular/router-builds#6b4daa7fcedc7455785d8c9eda943d91eb601031", - "@angular/service-worker": "github:angular/service-worker-builds#7479509d39a9e67d546524c00054151b6051f2cf" + "@angular/animations": "github:angular/animations-builds#e101708677171e99d559e1efa0de8dfcdb36f3cf", + "@angular/cdk": "github:angular/cdk-builds#a6a190f972cce775d98700d479b11da7c46c2c56", + "@angular/common": "github:angular/common-builds#1b4891c46e12bdc932eeec437e77a0743e1965ed", + "@angular/compiler": "github:angular/compiler-builds#61a6fdd8d270d5e139d05e3cd00563d1a7662f7e", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#c485d00f119f2ec4eef974d3aa1dfa24756d617a", + "@angular/core": "github:angular/core-builds#71954c2ccf6f69cd859dda23e680f12ad2312993", + "@angular/forms": "github:angular/forms-builds#3ae8c990600d5ece018bb8b10e1b324886afbc6d", + "@angular/language-service": "github:angular/language-service-builds#7688bea4d28c71093f706a83759adb4bdd64cb3d", + "@angular/localize": "github:angular/localize-builds#1ffbe873047872f0442c60778e59e9eda076f8ab", + "@angular/material": "github:angular/material-builds#dd8210be210cca8b250237b4cd7188b104cbb5a3", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#860960b97108877795ace821318151507c3b3ae2", + "@angular/platform-browser": "github:angular/platform-browser-builds#290996f4ad051ecc3783b919001330aa9d2a6af7", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#662143b17fc72dd08b7e3640ce44e10f26bbf1b6", + "@angular/platform-server": "github:angular/platform-server-builds#d356ffb8c07fb8e71859c67ade62e9f053cab327", + "@angular/router": "github:angular/router-builds#c1805e60ba8e0ba1f790bd7c742879f08ab81593", + "@angular/service-worker": "github:angular/service-worker-builds#7635d1c5f47639260747d8dfc057d8c8f7d6aacb" } } From ee7f96232632c8982501b47831ad34422b6167ea Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 17:11:42 -0400 Subject: [PATCH 042/160] release: cut the v20.0.0-next.2 release --- CHANGELOG.md | 41 +++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7e491ec7cbd..c468ff28e932 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,44 @@ + + +# 20.0.0-next.2 (2025-03-19) + +## Breaking Changes + +### @schematics/angular + +- `--server-routing` option has been removed from several schematics. Server routing will be used when using the application builder. + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------------------- | +| [26fd4ea73](https://github.com/angular/angular-cli/commit/26fd4ea73ad2a0148ae587d582134c68a0bf4b86) | feat | add migrations for server rendering updates | +| [18e13e2ce](https://github.com/angular/angular-cli/commit/18e13e2ceed931d29aa5582980c7d6d1f66c9787) | feat | remove `--server-routing` option | +| [86d241629](https://github.com/angular/angular-cli/commit/86d241629ff51f0bb5988e81cac8658b01704d49) | fix | add `@angular/ssr` dependency only when `provideServerRendering` import has been updated | +| [da6ef626f](https://github.com/angular/angular-cli/commit/da6ef626f960b187a7862f0caa3d8aed38224ac2) | fix | ensure app-shell schematic consistently uses `withAppShell` | +| [f126f8d34](https://github.com/angular/angular-cli/commit/f126f8d34b087dd3a916dfb93cd255aac4d6c309) | fix | ensure module discovery checks for an NgModule decorator | +| [23fc8e1e1](https://github.com/angular/angular-cli/commit/23fc8e1e176f23442876b086bff52dd5f35abbc0) | fix | generate components without a `.component` extension/type | +| [8d715fa94](https://github.com/angular/angular-cli/commit/8d715fa948d432b18d06bcf42eed3a7681383523) | fix | generate directives without a .directive extension/type | +| [bc0f07b48](https://github.com/angular/angular-cli/commit/bc0f07b484300848ee81c5719c58909b40f99deb) | fix | generate services without a .service extension/type | +| [c0de72317](https://github.com/angular/angular-cli/commit/c0de723173549f62a524b6e6c58c6d80c8054581) | fix | replace `@angular/platform-browser-dynamic` with `@angular/platform-browser` | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | +| [f4be83119](https://github.com/angular/angular-cli/commit/f4be831197010a17394264bc74b1eb385ba95028) | feat | Support Sass package importers | +| [cb2ab43ab](https://github.com/angular/angular-cli/commit/cb2ab43abcf0e3c1a2cc584a326e1eea5eede7a8) | fix | ensure errors for missing component resources | +| [f780e8beb](https://github.com/angular/angular-cli/commit/f780e8beb3ccea27ef0442d1d3814ec2a668057d) | fix | ensure relative karma stack traces for test failures | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------------- | +| [33b9de3eb](https://github.com/angular/angular-cli/commit/33b9de3eb1fa596a4d5a975d05275739f2f7b8ae) | feat | expose `provideServerRendering` and remove `provideServerRouting` | +| [cdfc50c29](https://github.com/angular/angular-cli/commit/cdfc50c29a2aa6f32d172b505a0ef09e563dfc59) | feat | stabilize `AngularNodeAppEngine`, `AngularAppEngine`, and `provideServerRouting` APIs | + + + # 19.2.4 (2025-03-19) diff --git a/package.json b/package.json index b550ca0638f7..1e3605d3082b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "20.0.0-next.1", + "version": "20.0.0-next.2", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From 381d35fe40f062713eac550a12b58c30c1ec33a9 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 17:56:51 -0400 Subject: [PATCH 043/160] fix(@schematics/angular): remove empty `scripts` option value from new applications The `scripts` option with an empty array value has been removed from newly generated applications including with `ng new`. This option is less commonly used and can be added if needed by a project. The removal reduces the total size of the generated `angular.json`. --- packages/schematics/angular/application/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 790e90fce784..875c3ced481b 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -244,7 +244,6 @@ function addAppToWorkspaceFile( inlineStyleLanguage, assets: [{ 'glob': '**/*', 'input': `${projectRoot}public` }], styles: [`${sourceRoot}/styles.${options.style}`], - scripts: [], }, configurations: { production: { @@ -284,7 +283,6 @@ function addAppToWorkspaceFile( inlineStyleLanguage, assets: [{ 'glob': '**/*', 'input': `${projectRoot}public` }], styles: [`${sourceRoot}/styles.${options.style}`], - scripts: [], }, }, }, From d98aa281800687d75da3d05a1b33b7c8b40d0d1f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 20 Mar 2025 05:02:54 +0000 Subject: [PATCH 044/160] build: update scorecard action dependencies --- .github/workflows/scorecard.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1d7ff690a396..0542d4a5e077 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -38,7 +38,7 @@ jobs: # Upload the results as artifacts. - name: 'Upload artifact' - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: SARIF file path: results.sarif @@ -46,6 +46,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 + uses: github/codeql-action/upload-sarif@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 with: sarif_file: results.sarif From 5169f2129137c3665ed1de5f6c231d3d145e4c5d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Mar 2025 12:10:23 +0000 Subject: [PATCH 045/160] docs(@angular/ssr): remove extra pipe from link in tsdocs This is not needed. --- packages/angular/ssr/src/routes/route-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/ssr/src/routes/route-config.ts b/packages/angular/ssr/src/routes/route-config.ts index c07c9d76081e..a5fb6709e4e5 100644 --- a/packages/angular/ssr/src/routes/route-config.ts +++ b/packages/angular/ssr/src/routes/route-config.ts @@ -296,7 +296,7 @@ export function withRoutes( * ``` * * @see {@link provideServerRendering} - * @see {@link https://angular.dev/ecosystem/service-workers/app-shell | App shell pattern on Angular.dev} + * @see {@link https://angular.dev/ecosystem/service-workers/app-shell App shell pattern on Angular.dev} */ export function withAppShell( component: Type | (() => Promise | DefaultExport>>), From 2cc6b7f29654470fbae3dd810137e4b33f388b4a Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:50:11 +0000 Subject: [PATCH 046/160] refactor: remove dependency on `@angular/platform-browser-dynamic` This commit remove the dependency on `@angular/platform-browser-dynamic` from new projects. This is now possible due to https://github.com/angular/angular/pull/60453 --- .../projects/hello-world-app/src/main.ts | 4 ++-- package.json | 1 - packages/angular/build/BUILD.bazel | 3 --- packages/angular/build/package.json | 4 ++++ .../tests/options/app-shell_spec.ts | 4 ++-- .../builders/karma/polyfills/init_test_bed.js | 7 ++----- .../angular_devkit/build_angular/BUILD.bazel | 1 - .../angular_devkit/build_angular/package.json | 4 ++++ .../src/builders/app-shell/app-shell_spec.ts | 4 ++-- .../builders/browser/specs/rebuild_spec.ts | 4 ++-- .../builders/browser/specs/web-worker_spec.ts | 4 ++-- .../src/builders/jest/init-test-bed.mjs | 7 ++----- .../src/builders/karma/browser_builder.ts | 7 ++----- .../web-test-runner/jasmine_runner.js | 7 ++----- .../angular_devkit/build_webpack/BUILD.bazel | 1 - .../test/angular-app/src/main.ts | 4 ++-- .../workspace/files/package.json.template | 1 - pnpm-lock.yaml | 21 ------------------- .../assets/ssr-project-webpack/package.json | 1 - .../assets/ssr-project-webpack/src/main.ts | 6 ++---- .../express-engine-ngmodule.ts | 4 ++-- 21 files changed, 32 insertions(+), 67 deletions(-) diff --git a/modules/testing/builder/projects/hello-world-app/src/main.ts b/modules/testing/builder/projects/hello-world-app/src/main.ts index 0b9dfa142956..d975b48d7808 100644 --- a/modules/testing/builder/projects/hello-world-app/src/main.ts +++ b/modules/testing/builder/projects/hello-world-app/src/main.ts @@ -6,10 +6,10 @@ * found in the LICENSE file at https://angular.dev/license */ -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; -platformBrowserDynamic() +platformBrowser() .bootstrapModule(AppModule) .catch(err => console.log(err)); diff --git a/package.json b/package.json index 1e3605d3082b..ffcce40ae1fc 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,6 @@ "@angular/material": "20.0.0-next.2", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#d25ced20c12ad010c2b5b560acb78065f8d6564e", "@angular/platform-browser": "20.0.0-next.3", - "@angular/platform-browser-dynamic": "20.0.0-next.3", "@angular/platform-server": "20.0.0-next.3", "@angular/router": "20.0.0-next.3", "@angular/service-worker": "20.0.0-next.3", diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 061e096e6e58..b761262539a4 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -169,7 +169,6 @@ ts_project( "//:node_modules/@angular/compiler-cli", "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", - "//:node_modules/@angular/platform-browser-dynamic", "//:node_modules/@angular/router", "//:node_modules/rxjs", "//:node_modules/tslib", @@ -202,7 +201,6 @@ ts_project( "//:node_modules/@angular/compiler-cli", "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", - "//:node_modules/@angular/platform-browser-dynamic", "//:node_modules/@angular/router", ":node_modules/ng-packagr", "//:node_modules/rxjs", @@ -238,7 +236,6 @@ ts_project( "//:node_modules/@angular/compiler-cli", "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", - "//:node_modules/@angular/platform-browser-dynamic", "//:node_modules/@angular/router", "//:node_modules/rxjs", "//:node_modules/tslib", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 793796fdb7f2..9923f5dfa1db 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -60,6 +60,7 @@ "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/localize": "0.0.0-ANGULAR-FW-PEER-DEP", + "@angular/platform-browser": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/platform-server": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/service-worker": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/ssr": "^0.0.0-PLACEHOLDER", @@ -74,6 +75,9 @@ "@angular/localize": { "optional": true }, + "@angular/platform-browser": { + "optional": true + }, "@angular/platform-server": { "optional": true }, diff --git a/packages/angular/build/src/builders/application/tests/options/app-shell_spec.ts b/packages/angular/build/src/builders/application/tests/options/app-shell_spec.ts index a946357af48c..9c8384b29efc 100644 --- a/packages/angular/build/src/builders/application/tests/options/app-shell_spec.ts +++ b/packages/angular/build/src/builders/application/tests/options/app-shell_spec.ts @@ -69,10 +69,10 @@ const appShellRouteFiles: Record = { export class AppServerModule {} `, 'src/main.ts': ` - import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; - platformBrowserDynamic().bootstrapModule(AppModule).catch(err => console.log(err)); + platformBrowser().bootstrapModule(AppModule).catch(err => console.log(err)); `, 'src/app/app-routing.module.ts': ` import { NgModule } from '@angular/core'; diff --git a/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js b/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js index 0857396195c8..fdbb476808c3 100644 --- a/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js +++ b/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js @@ -7,13 +7,10 @@ */ import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; +import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; // Initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { +getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 8b1783f04c47..3886b35d85bc 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -402,7 +402,6 @@ LARGE_SPECS = { "//:node_modules/@angular/compiler-cli", "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", - "//:node_modules/@angular/platform-browser-dynamic", "//:node_modules/@angular/router", "//:node_modules/rxjs", "//:node_modules/tslib", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 44915bc5604a..9bdb8271606b 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -75,6 +75,7 @@ "peerDependencies": { "@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/localize": "0.0.0-ANGULAR-FW-PEER-DEP", + "@angular/platform-browser": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/platform-server": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/service-worker": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/ssr": "^0.0.0-PLACEHOLDER", @@ -92,6 +93,9 @@ "@angular/localize": { "optional": true }, + "@angular/platform-browser": { + "optional": true + }, "@angular/platform-server": { "optional": true }, diff --git a/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts b/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts index afabdb3094ac..468bdb6ff2bd 100644 --- a/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts @@ -91,11 +91,11 @@ describe('AppShell Builder', () => { export class AppServerModule {} `, 'src/main.ts': ` - import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; document.addEventListener('DOMContentLoaded', () => { - platformBrowserDynamic().bootstrapModule(AppModule) + platformBrowser().bootstrapModule(AppModule) .catch(err => console.log(err)); }); `, diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts index 9a89c4d5a04c..fbceb61d270d 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts @@ -55,10 +55,10 @@ describe('Browser Builder rebuilds', () => { export let X = '$$_E2E_GOLDEN_VALUE_2'; `, 'src/main.ts': ` - import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; - platformBrowserDynamic().bootstrapModule(AppModule); + platformBrowser().bootstrapModule(AppModule); import * as m from './app/app.module'; console.log(m.X); diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts index 9e23602d78fc..a9d7d0c38f71 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts @@ -36,9 +36,9 @@ describe('Browser Builder Web Worker support', () => { }); `, 'src/main.ts': ` - import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; - platformBrowserDynamic().bootstrapModule(AppModule).catch(err => console.error(err)); + platformBrowser().bootstrapModule(AppModule).catch(err => console.error(err)); const worker = new Worker(new URL('./app/app.worker', import.meta.url), { type: 'module' }); worker.onmessage = ({ data }) => { diff --git a/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs b/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs index 4c229bcbc117..d8e8bb909194 100644 --- a/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs +++ b/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs @@ -10,12 +10,9 @@ // `@angular-devkit/build-angular` rather than the user's workspace. Should look into virtual modules to support those use cases. import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; +import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; -getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { +getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); diff --git a/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts b/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts index da6995ba223d..7ae7689402fb 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts @@ -153,13 +153,10 @@ function getBuiltInMainFile(): string { const content = Buffer.from( ` import { getTestBed } from '@angular/core/testing'; - import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, - } from '@angular/platform-browser-dynamic/testing'; + import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; // Initialize the Angular testing environment. - getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { + getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true }); diff --git a/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js b/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js index 994697c7ac1d..035959a7844e 100644 --- a/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js +++ b/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js @@ -7,10 +7,7 @@ */ import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; +import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; import { getConfig, sessionFailed, @@ -67,7 +64,7 @@ export async function runJasmineTests(jasmineEnv) { jasmine.DEFAULT_TIMEOUT_INTERVAL = config.defaultTimeoutInterval; // Initialize `TestBed` automatically for users. This assumes we already evaluated `zone.js/testing`. - getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { + getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel index f8f7be349938..6b190d5a4386 100644 --- a/packages/angular_devkit/build_webpack/BUILD.bazel +++ b/packages/angular_devkit/build_webpack/BUILD.bazel @@ -87,7 +87,6 @@ jasmine_test( "//:node_modules/@angular/compiler-cli", "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", - "//:node_modules/@angular/platform-browser-dynamic", "//:node_modules/tslib", "//:node_modules/typescript", "//:node_modules/zone.js", diff --git a/packages/angular_devkit/build_webpack/test/angular-app/src/main.ts b/packages/angular_devkit/build_webpack/test/angular-app/src/main.ts index 99e8f91dd030..9fff4140458d 100644 --- a/packages/angular_devkit/build_webpack/test/angular-app/src/main.ts +++ b/packages/angular_devkit/build_webpack/test/angular-app/src/main.ts @@ -6,9 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; -platformBrowserDynamic() +platformBrowser() .bootstrapModule(AppModule) .catch((err) => console.log(err)); diff --git a/packages/schematics/angular/workspace/files/package.json.template b/packages/schematics/angular/workspace/files/package.json.template index 51468a39dd08..4ee0cdd9ab73 100644 --- a/packages/schematics/angular/workspace/files/package.json.template +++ b/packages/schematics/angular/workspace/files/package.json.template @@ -15,7 +15,6 @@ "@angular/core": "<%= latestVersions.Angular %>", "@angular/forms": "<%= latestVersions.Angular %>", "@angular/platform-browser": "<%= latestVersions.Angular %>", - "@angular/platform-browser-dynamic": "<%= latestVersions.Angular %>", "@angular/router": "<%= latestVersions.Angular %>", "rxjs": "<%= latestVersions['rxjs'] %>", "tslib": "<%= latestVersions['tslib'] %>", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee57ab9920e9..30adba826f1c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,9 +47,6 @@ importers: '@angular/platform-browser': specifier: 20.0.0-next.3 version: 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/platform-browser-dynamic': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))) '@angular/platform-server': specifier: 20.0.0-next.3 version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) @@ -970,15 +967,6 @@ packages: version: 0.0.0-27078026111b01a7202449e9788ce38f2b2e103f hasBin: true - '@angular/platform-browser-dynamic@20.0.0-next.3': - resolution: {integrity: sha512-i1UbOtTXFEurf/qX4zRuTPyrn+M35JZQZjn9PMyzVgDtpcZlEBpvcSL8ctogDxYXkYd6/rEByPyFdTvH8YN+Ug==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} - peerDependencies: - '@angular/common': 20.0.0-next.3 - '@angular/compiler': 20.0.0-next.3 - '@angular/core': 20.0.0-next.3 - '@angular/platform-browser': 20.0.0-next.3 - '@angular/platform-browser@20.0.0-next.3': resolution: {integrity: sha512-rtBwaE0suHAHn5KpFIP6LKGRCIqCg9qPjQQrpgR4Yguke0peNFdY7j6k0oga+vd8xjxrRZftjXcC6cpK5itQGw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} @@ -6551,7 +6539,6 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qjobs@1.2.0: @@ -8039,14 +8026,6 @@ snapshots: transitivePeerDependencies: - encoding - '@angular/platform-browser-dynamic@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))': - dependencies: - '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/compiler': 20.0.0-next.3 - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) - tslib: 2.8.1 - '@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json b/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json index c8588a03cc54..ad0518bc97bd 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json +++ b/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json @@ -20,7 +20,6 @@ "@angular/core": "^20.0.0-next.0", "@angular/forms": "^20.0.0-next.0", "@angular/platform-browser": "^20.0.0-next.0", - "@angular/platform-browser-dynamic": "^20.0.0-next.0", "@angular/platform-server": "^20.0.0-next.0", "@angular/router": "^20.0.0-next.0", "@angular/ssr": "^20.0.0-next.0", diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.ts b/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.ts index c58dc05cbc6d..f3a8a045a0a7 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.ts +++ b/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.ts @@ -1,7 +1,5 @@ -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - +import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; - -platformBrowserDynamic().bootstrapModule(AppModule) +platformBrowser().bootstrapModule(AppModule) .catch(err => console.error(err)); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts index 8654c01bf79a..8313496d2046 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts @@ -69,11 +69,11 @@ export default async function () { 'projects/test-project-two/src/app/app.css': `div { color: #000 }`, 'projects/test-project-two/src/styles.css': `* { color: #000 }`, 'projects/test-project-two/src/main.ts': ` - import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; (window as any)['doBootstrap'] = () => { - platformBrowserDynamic() + platformBrowser() .bootstrapModule(AppModule) .catch((err) => console.error(err)); }; From d89c2cbec20f65b8220ce795f54716958cb77fe8 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Mar 2025 07:52:14 +0000 Subject: [PATCH 047/160] refactor: use `platformBrowser` instead of `platformBrowserTesting` `platformBrowserTesting` currently does not include the right providers. See: https://github.com/angular/angular/pull/60480 --- .../build/src/builders/karma/polyfills/init_test_bed.js | 6 ++++-- .../build_angular/src/builders/jest/init-test-bed.mjs | 6 ++++-- .../build_angular/src/builders/karma/browser_builder.ts | 4 +++- .../src/builders/web-test-runner/jasmine_runner.js | 6 ++++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js b/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js index fdbb476808c3..3f041d03dafa 100644 --- a/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js +++ b/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js @@ -7,10 +7,12 @@ */ import { getTestBed } from '@angular/core/testing'; -import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; +import { platformBrowser } from '@angular/platform-browser'; +import { BrowserTestingModule } from '@angular/platform-browser/testing'; +// TODO(alanagius): replace with `platformBrowserTesting` once https://github.com/angular/angular/pull/60480 is released. // Initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { +getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowser(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); diff --git a/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs b/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs index d8e8bb909194..7ab17c1b2f85 100644 --- a/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs +++ b/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs @@ -10,9 +10,11 @@ // `@angular-devkit/build-angular` rather than the user's workspace. Should look into virtual modules to support those use cases. import { getTestBed } from '@angular/core/testing'; -import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; +import { platformBrowser } from '@angular/platform-browser'; +import { BrowserTestingModule } from '@angular/platform-browser/testing'; -getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { +// TODO(alanagius): replace with `platformBrowserTesting` once https://github.com/angular/angular/pull/60480 is released. +getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowser(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); diff --git a/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts b/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts index 7ae7689402fb..092b88d2de26 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts @@ -153,10 +153,12 @@ function getBuiltInMainFile(): string { const content = Buffer.from( ` import { getTestBed } from '@angular/core/testing'; + import { platformBrowser } from '@angular/platform-browser'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; + // TODO(alanagius): replace with \`platformBrowserTesting\` once https://github.com/angular/angular/pull/60480 is released. // Initialize the Angular testing environment. - getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { + getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowser(), { errorOnUnknownElements: true, errorOnUnknownProperties: true }); diff --git a/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js b/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js index 035959a7844e..fa78031bb97d 100644 --- a/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js +++ b/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js @@ -7,7 +7,8 @@ */ import { getTestBed } from '@angular/core/testing'; -import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; +import { platformBrowser } from '@angular/platform-browser'; +import { BrowserTestingModule } from '@angular/platform-browser/testing'; import { getConfig, sessionFailed, @@ -64,7 +65,8 @@ export async function runJasmineTests(jasmineEnv) { jasmine.DEFAULT_TIMEOUT_INTERVAL = config.defaultTimeoutInterval; // Initialize `TestBed` automatically for users. This assumes we already evaluated `zone.js/testing`. - getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { + // TODO(alanagius): replace with `platformBrowserTesting` once https://github.com/angular/angular/pull/60480 is released. + getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowser(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); From 156a14e387d83002fa01b33d574a6fbc078dad84 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Mar 2025 13:00:13 +0000 Subject: [PATCH 048/160] fix(@angular/build): correct handling of response/request errors Prior to this change, request errors were not handled correctly. Closes #29884 --- .../build/src/utils/server-rendering/launch-server.ts | 2 +- .../angular/build/src/utils/server-rendering/prerender.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/angular/build/src/utils/server-rendering/launch-server.ts b/packages/angular/build/src/utils/server-rendering/launch-server.ts index 4d8f3fbdd259..cfb15b0d979b 100644 --- a/packages/angular/build/src/utils/server-rendering/launch-server.ts +++ b/packages/angular/build/src/utils/server-rendering/launch-server.ts @@ -33,7 +33,7 @@ export async function launchServer(): Promise { // handle request if (isSsrNodeRequestHandler(reqHandler)) { await reqHandler(req, res, (e) => { - throw e; + throw e ?? new Error(`Unable to handle request: '${req.url}'.`); }); } else { const webRes = await reqHandler(createWebRequestFromNodeRequest(req)); diff --git a/packages/angular/build/src/utils/server-rendering/prerender.ts b/packages/angular/build/src/utils/server-rendering/prerender.ts index 76b9de2bc2fe..a8a42c7c941a 100644 --- a/packages/angular/build/src/utils/server-rendering/prerender.ts +++ b/packages/angular/build/src/utils/server-rendering/prerender.ts @@ -113,7 +113,7 @@ export async function prerenderPages( outputMode, ).catch((err) => { return { - errors: [`An error occurred while extracting routes.\n\n${err.stack ?? err.message ?? err}`], + errors: [`An error occurred while extracting routes.\n\n${err.message ?? err.stack ?? err}`], serializedRouteTree: [], appShellRoute: undefined, }; @@ -258,7 +258,7 @@ async function renderPages( }) .catch((err) => { errors.push( - `An error occurred while prerendering route '${route}'.\n\n${err.stack ?? err.message ?? err.code ?? err}`, + `An error occurred while prerendering route '${route}'.\n\n${err.message ?? err.stack ?? err.code ?? err}`, ); void renderWorker.destroy(); }); @@ -359,7 +359,7 @@ async function getAllRoutes( return { errors: [ - `An error occurred while extracting routes.\n\n${err.stack ?? err.message ?? err.code ?? err}`, + `An error occurred while extracting routes.\n\n${err.message ?? err.stack ?? err.code ?? err}`, ], serializedRouteTree: [], }; From 9b682e62519e761477e6266650239bf58026a9f4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 19:21:09 -0400 Subject: [PATCH 049/160] feat(@angular/build): support a default outputPath option for applications The application builder will now use a default output path when the `outputPath` option is not specified either in the `angular.json` configuration or via the command line. The default used will be `dist/` and be relative to the workspace root. This value is the typical default for new projects. Projects may continue to customize the output path via the option if needed. Existing project behavior and configuration will not be changed. --- goldens/public-api/angular/build/index.api.md | 2 +- packages/angular/build/src/builders/application/options.ts | 2 +- packages/angular/build/src/builders/application/schema.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 79240b301679..3e0a2578ed12 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -49,7 +49,7 @@ export type ApplicationBuilderOptions = { optimization?: OptimizationUnion; outputHashing?: OutputHashing; outputMode?: OutputMode; - outputPath: OutputPathUnion; + outputPath?: OutputPathUnion; poll?: number; polyfills?: string[]; prerender?: PrerenderUnion; diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index a58c60386c9c..2fd1a2f5430c 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -295,7 +295,7 @@ export async function normalizeOptions( }; } - const outputPath = options.outputPath; + const outputPath = options.outputPath ?? path.join(workspaceRoot, 'dist', projectName); const outputOptions: NormalizedOutputOptions = { browser: 'browser', server: 'server', diff --git a/packages/angular/build/src/builders/application/schema.json b/packages/angular/build/src/builders/application/schema.json index d990e3a3cff3..fabb4dcddfcc 100644 --- a/packages/angular/build/src/builders/application/schema.json +++ b/packages/angular/build/src/builders/application/schema.json @@ -605,7 +605,7 @@ } }, "additionalProperties": false, - "required": ["outputPath", "index", "browser", "tsConfig"], + "required": ["index", "browser", "tsConfig"], "definitions": { "assetPattern": { "oneOf": [ From 63428f3f1e2ffd427011ea8a17b70f8829ae0bdf Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:45:21 +0000 Subject: [PATCH 050/160] perf(@angular/ssr): flush headers prior to start rendering the HTML This change ensures that HTTP headers are flushed to the client before the server begins rendering the Angular application HTML. By flushing headers early, the server can inform the client of response metadata (e.g., status code, content type) immediately, improving performance and user experience. --- packages/angular/ssr/src/app.ts | 44 ++++++++------ packages/angular/ssr/src/utils/ng.ts | 87 +++++++++++++++++++++------- 2 files changed, 90 insertions(+), 41 deletions(-) diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index 87710e167a57..a4eb2fbf6098 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -102,6 +102,14 @@ export class AngularServerApp { constructor(private readonly options: Readonly = {}) { this.allowStaticRouteRender = this.options.allowStaticRouteRender ?? false; this.hooks = options.hooks ?? new Hooks(); + + if (this.manifest.inlineCriticalCss) { + this.inlineCriticalCssProcessor = new InlineCriticalCssProcessor((path: string) => { + const fileName = path.split('/').pop() ?? path; + + return this.assets.getServerAsset(fileName).text(); + }); + } } /** @@ -267,7 +275,7 @@ export class AngularServerApp { const platformProviders: StaticProvider[] = []; const { - manifest: { bootstrap, inlineCriticalCss, locale }, + manifest: { bootstrap, locale }, assets, } = this; @@ -315,7 +323,8 @@ export class AngularServerApp { this.boostrap ??= await bootstrap(); let html = await assets.getIndexServerHtml().text(); html = await this.runTransformsOnHtml(html, url, preload); - html = await renderAngular( + + const { content } = await renderAngular( html, this.boostrap, url, @@ -323,41 +332,38 @@ export class AngularServerApp { SERVER_CONTEXT_VALUE[renderMode], ); - if (!inlineCriticalCss) { - return new Response(html, responseInit); - } - - this.inlineCriticalCssProcessor ??= new InlineCriticalCssProcessor((path: string) => { - const fileName = path.split('/').pop() ?? path; - - return this.assets.getServerAsset(fileName).text(); - }); - const { inlineCriticalCssProcessor, criticalCssLRUCache, textDecoder } = this; - // Use a stream to send the response before inlining critical CSS, improving performance via header flushing. + // Use a stream to send the response before finishing rendering and inling critical CSS, improving performance via header flushing. const stream = new ReadableStream({ async start(controller) { - let htmlWithCriticalCss; + const renderedHtml = await content(); + + if (!inlineCriticalCssProcessor) { + controller.enqueue(textDecoder.encode(renderedHtml)); + controller.close(); + return; + } + + let htmlWithCriticalCss; try { if (renderMode === RenderMode.Server) { - const cacheKey = await sha256(html); + const cacheKey = await sha256(renderedHtml); htmlWithCriticalCss = criticalCssLRUCache.get(cacheKey); if (!htmlWithCriticalCss) { - htmlWithCriticalCss = await inlineCriticalCssProcessor.process(html); + htmlWithCriticalCss = await inlineCriticalCssProcessor.process(renderedHtml); criticalCssLRUCache.put(cacheKey, htmlWithCriticalCss); } } else { - htmlWithCriticalCss = await inlineCriticalCssProcessor.process(html); + htmlWithCriticalCss = await inlineCriticalCssProcessor.process(renderedHtml); } } catch (error) { // eslint-disable-next-line no-console console.error(`An error occurred while inlining critical CSS for: ${url}.`, error); } - controller.enqueue(textDecoder.encode(htmlWithCriticalCss ?? html)); - + controller.enqueue(textDecoder.encode(htmlWithCriticalCss ?? renderedHtml)); controller.close(); }, }); diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index 55faa0adb205..d43ffdefc1dc 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -6,12 +6,18 @@ * found in the LICENSE file at https://angular.dev/license */ -import { ɵConsole } from '@angular/core'; -import type { ApplicationRef, StaticProvider, Type } from '@angular/core'; import { + ApplicationRef, + type PlatformRef, + type StaticProvider, + type Type, + ɵConsole, +} from '@angular/core'; +import { + INITIAL_CONFIG, ɵSERVER_CONTEXT as SERVER_CONTEXT, - renderApplication, - renderModule, + platformServer, + ɵrenderInternal as renderInternal, } from '@angular/platform-server'; import { Console } from '../console'; import { stripIndexHtmlFromURL } from './url'; @@ -41,16 +47,26 @@ export type AngularBootstrap = Type | (() => Promise); * rendering process. * @param serverContext - A string representing the server context, used to provide additional * context or metadata during server-side rendering. - * @returns A promise that resolves to a string containing the rendered HTML. + * @returns A promise resolving to an object containing a `content` method, which returns a + * promise that resolves to the rendered HTML string. */ -export function renderAngular( +export async function renderAngular( html: string, bootstrap: AngularBootstrap, url: URL, platformProviders: StaticProvider[], serverContext: string, -): Promise { - const providers = [ +): Promise<{ content: () => Promise }> { + // A request to `http://www.example.com/page/index.html` will render the Angular route corresponding to `http://www.example.com/page`. + const urlToRender = stripIndexHtmlFromURL(url).toString(); + const platformRef = platformServer([ + { + provide: INITIAL_CONFIG, + useValue: { + url: urlToRender, + document: html, + }, + }, { provide: SERVER_CONTEXT, useValue: serverContext, @@ -64,22 +80,34 @@ export function renderAngular( useFactory: () => new Console(), }, ...platformProviders, - ]; + ]); - // A request to `http://www.example.com/page/index.html` will render the Angular route corresponding to `http://www.example.com/page`. - const urlToRender = stripIndexHtmlFromURL(url).toString(); + try { + let applicationRef: ApplicationRef; + if (isNgModule(bootstrap)) { + const moduleRef = await platformRef.bootstrapModule(bootstrap); + applicationRef = moduleRef.injector.get(ApplicationRef); + } else { + applicationRef = await bootstrap(); + } - return isNgModule(bootstrap) - ? renderModule(bootstrap, { - url: urlToRender, - document: html, - extraProviders: providers, - }) - : renderApplication(bootstrap, { - url: urlToRender, - document: html, - platformProviders: providers, - }); + // Block until application is stable. + await applicationRef.whenStable(); + + return { + content: async () => { + try { + return renderInternal(platformRef, applicationRef); + } finally { + await asyncDestroyPlatform(platformRef); + } + }, + }; + } catch (error) { + await asyncDestroyPlatform(platformRef); + + throw error; + } } /** @@ -93,3 +121,18 @@ export function renderAngular( export function isNgModule(value: AngularBootstrap): value is Type { return 'ɵmod' in value; } + +/** + * Gracefully destroys the application in a macrotask, allowing pending promises to resolve + * and surfacing any potential errors to the user. + * + * @param platformRef - The platform reference to be destroyed. + */ +function asyncDestroyPlatform(platformRef: PlatformRef): Promise { + return new Promise((resolve) => { + setTimeout(() => { + platformRef.destroy(); + resolve(); + }, 0); + }); +} From 58a39b4ce1ae046134c9a25814e32fe51446fc40 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:41:21 -0400 Subject: [PATCH 051/160] build: move rxjs dependency out of root With the migration to `rules_js`, package specific dependencies now only need to be referenced with the source `package.json` for each specific package. The `rxjs` dependency has now been moved to usage locations instead of the root of the repository. --- modules/testing/builder/BUILD.bazel | 2 +- modules/testing/builder/package.json | 3 ++- package.json | 1 - packages/angular/build/BUILD.bazel | 6 +++--- packages/angular/build/package.json | 3 ++- packages/angular_devkit/architect/BUILD.bazel | 4 ++-- packages/angular_devkit/architect/node/BUILD.bazel | 4 ++-- .../angular_devkit/architect/testing/BUILD.bazel | 2 +- packages/angular_devkit/build_angular/BUILD.bazel | 6 +++--- .../src/builders/browser/specs/lazy-module_spec.ts | 9 ++------- packages/angular_devkit/build_webpack/BUILD.bazel | 2 +- packages/angular_devkit/core/BUILD.bazel | 4 ++-- packages/angular_devkit/core/node/BUILD.bazel | 4 ++-- .../angular_devkit/core/node/testing/BUILD.bazel | 2 +- packages/angular_devkit/schematics/BUILD.bazel | 4 ++-- packages/angular_devkit/schematics/tasks/BUILD.bazel | 2 +- .../angular_devkit/schematics/tasks/node/BUILD.bazel | 2 +- .../angular_devkit/schematics/testing/BUILD.bazel | 2 +- packages/angular_devkit/schematics/tools/BUILD.bazel | 4 ++-- pnpm-lock.yaml | 12 +++++++++--- tests/legacy-cli/e2e/utils/BUILD.bazel | 2 +- tests/package.json | 1 + 22 files changed, 42 insertions(+), 39 deletions(-) diff --git a/modules/testing/builder/BUILD.bazel b/modules/testing/builder/BUILD.bazel index 6983baca7fda..0b8bf95dfaa2 100644 --- a/modules/testing/builder/BUILD.bazel +++ b/modules/testing/builder/BUILD.bazel @@ -24,8 +24,8 @@ ts_project( deps = [ ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", + ":node_modules/rxjs", "//:node_modules/@types/node", - "//:node_modules/rxjs", ], ) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index d315fc454ede..9e62d668aeee 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -3,6 +3,7 @@ "@angular-devkit/core": "workspace:*", "@angular-devkit/architect": "workspace:*", "@angular/ssr": "workspace:*", - "@angular-devkit/build-angular": "workspace:*" + "@angular-devkit/build-angular": "workspace:*", + "rxjs": "7.8.2" } } diff --git a/package.json b/package.json index ffcce40ae1fc..2996f198e27c 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,6 @@ "rollup": "4.36.0", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", - "rxjs": "7.8.2", "semver": "7.7.1", "shelljs": "^0.9.0", "source-map-support": "0.5.21", diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index b761262539a4..b337cd6a9e5b 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -170,7 +170,7 @@ ts_project( "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", "//:node_modules/@angular/router", - "//:node_modules/rxjs", + ":node_modules/rxjs", "//:node_modules/tslib", "//:node_modules/typescript", "//:node_modules/zone.js", @@ -203,7 +203,7 @@ ts_project( "//:node_modules/@angular/platform-browser", "//:node_modules/@angular/router", ":node_modules/ng-packagr", - "//:node_modules/rxjs", + ":node_modules/rxjs", "//:node_modules/tslib", "//:node_modules/typescript", "//:node_modules/zone.js", @@ -237,7 +237,7 @@ ts_project( "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", "//:node_modules/@angular/router", - "//:node_modules/rxjs", + ":node_modules/rxjs", "//:node_modules/tslib", "//:node_modules/typescript", "//:node_modules/zone.js", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 9923f5dfa1db..53002a2a5163 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -54,7 +54,8 @@ "@angular-devkit/core": "workspace:*", "less": "4.2.2", "ng-packagr": "20.0.0-next.1", - "postcss": "8.5.3" + "postcss": "8.5.3", + "rxjs": "7.8.2" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular_devkit/architect/BUILD.bazel b/packages/angular_devkit/architect/BUILD.bazel index 5edb897086a8..b198d8733dad 100644 --- a/packages/angular_devkit/architect/BUILD.bazel +++ b/packages/angular_devkit/architect/BUILD.bazel @@ -69,8 +69,8 @@ ts_project( module_name = "@angular-devkit/architect", deps = [ ":node_modules/@angular-devkit/core", + ":node_modules/rxjs", "//:node_modules/@types/node", - "//:node_modules/rxjs", ], ) @@ -81,9 +81,9 @@ ts_project( deps = [ ":architect", ":node_modules/@angular-devkit/core", + ":node_modules/rxjs", "//:node_modules/@types/jasmine", "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/architect/testing", ], ) diff --git a/packages/angular_devkit/architect/node/BUILD.bazel b/packages/angular_devkit/architect/node/BUILD.bazel index 2dbbc9a7c3b4..bf10f87babac 100644 --- a/packages/angular_devkit/architect/node/BUILD.bazel +++ b/packages/angular_devkit/architect/node/BUILD.bazel @@ -18,9 +18,9 @@ ts_project( module_name = "@angular-devkit/architect/node", deps = [ "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/architect", "//packages/angular_devkit/architect:node_modules/@angular-devkit/core", + "//packages/angular_devkit/architect:node_modules/rxjs", ], ) @@ -36,8 +36,8 @@ ts_project( ":node", "//:node_modules/@types/jasmine", "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/architect", + "//packages/angular_devkit/architect:node_modules/rxjs", "//packages/angular_devkit/architect/node/test:test_lib", ], ) diff --git a/packages/angular_devkit/architect/testing/BUILD.bazel b/packages/angular_devkit/architect/testing/BUILD.bazel index 589ed96abb5d..c6dfbab8a7a8 100644 --- a/packages/angular_devkit/architect/testing/BUILD.bazel +++ b/packages/angular_devkit/architect/testing/BUILD.bazel @@ -18,8 +18,8 @@ ts_project( module_name = "@angular-devkit/architect/testing", deps = [ "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/architect", "//packages/angular_devkit/architect:node_modules/@angular-devkit/core", + "//packages/angular_devkit/architect:node_modules/rxjs", ], ) diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 3886b35d85bc..d4a6c6eaa08b 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -169,6 +169,7 @@ ts_project( ":node_modules/postcss", ":node_modules/postcss-loader", ":node_modules/resolve-url-loader", + ":node_modules/rxjs", ":node_modules/sass", ":node_modules/sass-loader", ":node_modules/source-map-loader", @@ -201,7 +202,6 @@ ts_project( "//:node_modules/fast-glob", "//:node_modules/karma", "//:node_modules/karma-source-map-support", - "//:node_modules/rxjs", "//:node_modules/semver", "//:node_modules/tslib", "//:node_modules/typescript", @@ -299,9 +299,9 @@ ts_project( ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", ":node_modules/@angular/build", + ":node_modules/rxjs", "//:node_modules/@types/jasmine", "//:node_modules/@types/node", - "//:node_modules/rxjs", "//modules/testing/builder", ], ) @@ -403,7 +403,7 @@ LARGE_SPECS = { "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", "//:node_modules/@angular/router", - "//:node_modules/rxjs", + ":node_modules/rxjs", "//:node_modules/tslib", "//:node_modules/typescript", "//:node_modules/zone.js", diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts index f280658ac6a6..a68936a65036 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts @@ -149,15 +149,10 @@ describe('Browser Builder lazy modules', () => { 'src/main.ts': `import('./one'); import('./two');`, }); - const { files } = await browserBuild(architect, host, target, { - // Preserve symlinks to reliably verify the chunk names. When symlinks - // would be dereferenced, the `@angular/common` file can originate from a - // less predictable path in e.g. node_modules/.pnpm/<...>`. - preserveSymlinks: true, - }); + const { files } = await browserBuild(architect, host, target); expect(files['src_one_ts.js']).toBeDefined(); expect(files['src_two_ts.js']).toBeDefined(); - expect(files['default-node_modules_angular_common_fesm2022_http_mjs.js']).toBeDefined(); + expect(Object.keys(files)).toContain(jasmine.stringContaining('_angular_common_')); }); it(`supports disabling the common bundle`, async () => { diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel index 6b190d5a4386..c45bdea08e18 100644 --- a/packages/angular_devkit/build_webpack/BUILD.bazel +++ b/packages/angular_devkit/build_webpack/BUILD.bazel @@ -48,10 +48,10 @@ ts_project( module_name = "@angular-devkit/build-webpack", deps = [ ":node_modules/@angular-devkit/architect", + ":node_modules/rxjs", ":node_modules/webpack", ":node_modules/webpack-dev-server", "//:node_modules/@types/node", - "//:node_modules/rxjs", ], ) diff --git a/packages/angular_devkit/core/BUILD.bazel b/packages/angular_devkit/core/BUILD.bazel index b83bb47e0b23..aa55824c3975 100644 --- a/packages/angular_devkit/core/BUILD.bazel +++ b/packages/angular_devkit/core/BUILD.bazel @@ -36,11 +36,11 @@ ts_project( ":node_modules/ajv-formats", ":node_modules/jsonc-parser", ":node_modules/picomatch", + ":node_modules/rxjs", ":node_modules/source-map", "//:node_modules/@types/jasmine", "//:node_modules/@types/node", "//:node_modules/@types/picomatch", - "//:node_modules/rxjs", ], ) @@ -53,8 +53,8 @@ ts_project( data = glob(["src/workspace/json/test/**/*.json"]), deps = [ ":core", + ":node_modules/rxjs", "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/core/node", ], ) diff --git a/packages/angular_devkit/core/node/BUILD.bazel b/packages/angular_devkit/core/node/BUILD.bazel index f9247d41161d..a71684f1d882 100644 --- a/packages/angular_devkit/core/node/BUILD.bazel +++ b/packages/angular_devkit/core/node/BUILD.bazel @@ -21,9 +21,9 @@ ts_project( module_name = "@angular-devkit/core/node", deps = [ "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/core", "//packages/angular_devkit/core:node_modules/chokidar", + "//packages/angular_devkit/core:node_modules/rxjs", ], ) @@ -42,8 +42,8 @@ ts_project( ":node", "//:node_modules/@types/jasmine", "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/core", + "//packages/angular_devkit/core:node_modules/rxjs", ], ) diff --git a/packages/angular_devkit/core/node/testing/BUILD.bazel b/packages/angular_devkit/core/node/testing/BUILD.bazel index 473b47e5ade7..c57f3d95f55d 100644 --- a/packages/angular_devkit/core/node/testing/BUILD.bazel +++ b/packages/angular_devkit/core/node/testing/BUILD.bazel @@ -20,8 +20,8 @@ ts_project( deps = [ "//:node_modules/@types/jasmine", "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/core", + "//packages/angular_devkit/core:node_modules/rxjs", "//packages/angular_devkit/core/node", ], ) diff --git a/packages/angular_devkit/schematics/BUILD.bazel b/packages/angular_devkit/schematics/BUILD.bazel index 878a20442373..70e7cc247da0 100644 --- a/packages/angular_devkit/schematics/BUILD.bazel +++ b/packages/angular_devkit/schematics/BUILD.bazel @@ -30,8 +30,8 @@ ts_project( ":node_modules/@angular-devkit/core", ":node_modules/jsonc-parser", ":node_modules/magic-string", + ":node_modules/rxjs", "//:node_modules/@types/node", - "//:node_modules/rxjs", ], ) @@ -41,9 +41,9 @@ ts_project( srcs = glob(["src/**/*_spec.ts"]), deps = [ ":node_modules/@angular-devkit/core", + ":node_modules/rxjs", ":schematics", "//:node_modules/@types/jasmine", - "//:node_modules/rxjs", "//packages/angular_devkit/schematics/testing", ], ) diff --git a/packages/angular_devkit/schematics/tasks/BUILD.bazel b/packages/angular_devkit/schematics/tasks/BUILD.bazel index 852646d7585f..3027c56b123f 100644 --- a/packages/angular_devkit/schematics/tasks/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/BUILD.bazel @@ -21,9 +21,9 @@ ts_project( module_name = "@angular-devkit/schematics/tasks", deps = [ "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics:node_modules/@angular-devkit/core", "//packages/angular_devkit/schematics:node_modules/ora", + "//packages/angular_devkit/schematics:node_modules/rxjs", ], ) diff --git a/packages/angular_devkit/schematics/tasks/node/BUILD.bazel b/packages/angular_devkit/schematics/tasks/node/BUILD.bazel index c6d26d420436..ad190a93adce 100644 --- a/packages/angular_devkit/schematics/tasks/node/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/node/BUILD.bazel @@ -19,10 +19,10 @@ ts_project( module_name = "@angular-devkit/schematics/tasks/node", deps = [ "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//packages/angular_devkit/schematics", + "//packages/angular_devkit/schematics:node_modules/rxjs", "//packages/angular_devkit/schematics/tasks", ], ) diff --git a/packages/angular_devkit/schematics/testing/BUILD.bazel b/packages/angular_devkit/schematics/testing/BUILD.bazel index 3a6e5f898598..b860574c36a4 100644 --- a/packages/angular_devkit/schematics/testing/BUILD.bazel +++ b/packages/angular_devkit/schematics/testing/BUILD.bazel @@ -16,9 +16,9 @@ ts_project( data = ["package.json"], module_name = "@angular-devkit/schematics/testing", deps = [ - "//:node_modules/rxjs", "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics:node_modules/@angular-devkit/core", + "//packages/angular_devkit/schematics:node_modules/rxjs", "//packages/angular_devkit/schematics/tasks/node", "//packages/angular_devkit/schematics/tools", ], diff --git a/packages/angular_devkit/schematics/tools/BUILD.bazel b/packages/angular_devkit/schematics/tools/BUILD.bazel index be7d3e946edf..776d97502840 100644 --- a/packages/angular_devkit/schematics/tools/BUILD.bazel +++ b/packages/angular_devkit/schematics/tools/BUILD.bazel @@ -21,10 +21,10 @@ ts_project( module_name = "@angular-devkit/schematics/tools", deps = [ "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics:node_modules/@angular-devkit/core", "//packages/angular_devkit/schematics:node_modules/jsonc-parser", + "//packages/angular_devkit/schematics:node_modules/rxjs", "//packages/angular_devkit/schematics/tasks", "//packages/angular_devkit/schematics/tasks/node", ], @@ -43,9 +43,9 @@ ts_project( ":tools", "//:node_modules/@types/jasmine", "//:node_modules/@types/node", - "//:node_modules/rxjs", "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics:node_modules/@angular-devkit/core", + "//packages/angular_devkit/schematics:node_modules/rxjs", "//packages/angular_devkit/schematics/tasks", "//packages/angular_devkit/schematics/testing", "//tests/angular_devkit/schematics/tools/file-system-engine-host:file_system_engine_host_test_lib", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30adba826f1c..c4bc9215fc6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -272,9 +272,6 @@ importers: rollup-plugin-sourcemaps: specifier: ^0.6.0 version: 0.6.3(@types/node@20.17.24)(rollup@4.36.0) - rxjs: - specifier: 7.8.2 - version: 7.8.2 semver: specifier: 7.7.1 version: 7.7.1 @@ -337,6 +334,9 @@ importers: '@angular/ssr': specifier: workspace:* version: link:../../../packages/angular/ssr + rxjs: + specifier: 7.8.2 + version: 7.8.2 packages/angular/build: dependencies: @@ -441,6 +441,9 @@ importers: postcss: specifier: 8.5.3 version: 8.5.3 + rxjs: + specifier: 7.8.2 + version: 7.8.2 packages/angular/cli: dependencies: @@ -882,6 +885,9 @@ importers: '@angular-devkit/schematics': specifier: workspace:* version: link:../packages/angular_devkit/schematics + rxjs: + specifier: 7.8.2 + version: 7.8.2 tree-kill: specifier: 1.2.2 version: 1.2.2 diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/legacy-cli/e2e/utils/BUILD.bazel index 9c7a6c530504..044c1ba409bd 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/legacy-cli/e2e/utils/BUILD.bazel @@ -17,11 +17,11 @@ ts_project( "//:node_modules/fast-glob", "//:node_modules/npm", "//:node_modules/protractor", - "//:node_modules/rxjs", "//:node_modules/semver", "//:node_modules/tar", "//:node_modules/verdaccio", "//:node_modules/verdaccio-auth-memory", + "//tests:node_modules/rxjs", "//tests:node_modules/tree-kill", ], ) diff --git a/tests/package.json b/tests/package.json index baa0d682413b..4aec9553824b 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,6 +1,7 @@ { "devDependencies": { "@angular-devkit/schematics": "workspace:*", + "rxjs": "7.8.2", "tree-kill": "1.2.2" } } From 4153bd8b9b49cb612db8f90197271d0d2349fb43 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 20 Mar 2025 06:03:57 +0000 Subject: [PATCH 052/160] build: update all non-major dependencies --- .github/workflows/ci.yml | 2 +- .github/workflows/codeql.yml | 4 +- .github/workflows/pr.yml | 4 +- package.json | 4 +- pnpm-lock.yaml | 124 ++++++++++++++++++++++++++--------- 5 files changed, 100 insertions(+), 38 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9603e67a1a20..e89e3d795690 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -184,7 +184,7 @@ jobs: ./scripts/saucelabs/wait-for-tunnel.sh pnpm bazel test --config=saucelabs //tests/legacy-cli:e2e.saucelabs ./scripts/saucelabs/stop-tunnel.sh - - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: ${{ failure() }} with: name: sauce-connect-log diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e6a99a028cdc..5a9abb79df6c 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,12 +23,12 @@ jobs: with: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 + uses: github/codeql-action/init@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 + uses: github/codeql-action/analyze@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 05e7102795ac..8c80958ba610 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -36,7 +36,7 @@ jobs: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f - name: Setup ESLint Caching - uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: .eslintcache key: ${{ runner.os }}-${{ hashFiles('.eslintrc.json') }} @@ -80,7 +80,7 @@ jobs: - name: Build release targets run: pnpm ng-dev release build - name: Store PR release packages - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: packages path: dist/releases/*.tgz diff --git a/package.json b/package.json index 2996f198e27c..dc8dc7a124ee 100644 --- a/package.json +++ b/package.json @@ -94,8 +94,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.26.1", - "@typescript-eslint/parser": "8.26.1", + "@typescript-eslint/eslint-plugin": "8.27.0", + "@typescript-eslint/parser": "8.27.0", "ajv": "8.17.1", "ansi-colors": "4.1.3", "beasties": "0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4bc9215fc6c..4c60d409a38c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,11 +159,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.26.1 - version: 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + specifier: 8.27.0 + version: 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) '@typescript-eslint/parser': - specifier: 8.26.1 - version: 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + specifier: 8.27.0 + version: 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) ajv: specifier: 8.17.1 version: 8.17.1 @@ -193,7 +193,7 @@ importers: version: 3.1.1(eslint@9.22.0(jiti@1.21.7)) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7)) + version: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7)) express: specifier: 4.21.2 version: 4.21.2 @@ -2885,16 +2885,16 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.26.1': - resolution: {integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==} + '@typescript-eslint/eslint-plugin@8.27.0': + resolution: {integrity: sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/parser@8.26.1': - resolution: {integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==} + '@typescript-eslint/parser@8.27.0': + resolution: {integrity: sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2904,8 +2904,12 @@ packages: resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.26.1': - resolution: {integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==} + '@typescript-eslint/scope-manager@8.27.0': + resolution: {integrity: sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.27.0': + resolution: {integrity: sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2915,12 +2919,22 @@ packages: resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.27.0': + resolution: {integrity: sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.26.1': resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.8.2 + '@typescript-eslint/typescript-estree@8.27.0': + resolution: {integrity: sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: 5.8.2 + '@typescript-eslint/utils@8.26.1': resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2928,10 +2942,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 + '@typescript-eslint/utils@8.27.0': + resolution: {integrity: sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: 5.8.2 + '@typescript-eslint/visitor-keys@8.26.1': resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.27.0': + resolution: {integrity: sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@verdaccio/auth@8.0.0-next-8.7': resolution: {integrity: sha512-CSLBAsCJT1oOpJ4OWnVGmN6o/ZilDNa7Aa5+AU1LI2lbRblqgr4BVRn07GFqimJ//6+tPzl8BHgyiCbBhh1ZiA==} engines: {node: '>=18'} @@ -10050,14 +10075,14 @@ snapshots: '@types/node': 20.17.24 optional: true - '@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/scope-manager': 8.26.1 - '@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.26.1 + '@typescript-eslint/parser': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.27.0 + '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/utils': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.27.0 eslint: 9.22.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 @@ -10067,12 +10092,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.26.1 - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.26.1 + '@typescript-eslint/scope-manager': 8.27.0 + '@typescript-eslint/types': 8.27.0 + '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.27.0 debug: 4.4.0(supports-color@10.0.0) eslint: 9.22.0(jiti@1.21.7) typescript: 5.8.2 @@ -10084,10 +10109,15 @@ snapshots: '@typescript-eslint/types': 8.26.1 '@typescript-eslint/visitor-keys': 8.26.1 - '@typescript-eslint/type-utils@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/scope-manager@8.27.0': dependencies: - '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/types': 8.27.0 + '@typescript-eslint/visitor-keys': 8.27.0 + + '@typescript-eslint/type-utils@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) debug: 4.4.0(supports-color@10.0.0) eslint: 9.22.0(jiti@1.21.7) ts-api-utils: 2.0.1(typescript@5.8.2) @@ -10097,6 +10127,8 @@ snapshots: '@typescript-eslint/types@8.26.1': {} + '@typescript-eslint/types@8.27.0': {} + '@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 8.26.1 @@ -10111,6 +10143,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.27.0(typescript@5.8.2)': + dependencies: + '@typescript-eslint/types': 8.27.0 + '@typescript-eslint/visitor-keys': 8.27.0 + debug: 4.4.0(supports-color@10.0.0) + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7)) @@ -10122,11 +10168,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.27.0 + '@typescript-eslint/types': 8.27.0 + '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) + eslint: 9.22.0(jiti@1.21.7) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.26.1': dependencies: '@typescript-eslint/types': 8.26.1 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.27.0': + dependencies: + '@typescript-eslint/types': 8.27.0 + eslint-visitor-keys: 4.2.0 + '@verdaccio/auth@8.0.0-next-8.7': dependencies: '@verdaccio/config': 8.0.0-next-8.7 @@ -11850,11 +11912,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0(jiti@1.21.7)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) eslint: 9.22.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -11864,7 +11926,7 @@ snapshots: dependencies: eslint: 9.22.0(jiti@1.21.7) - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11875,7 +11937,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.22.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0(jiti@1.21.7)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11887,7 +11949,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -12061,7 +12123,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.0(supports-color@10.0.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: From 2a32030529deaf14816b8a7ee3164eecf00d7501 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 21 Mar 2025 10:49:35 +0000 Subject: [PATCH 053/160] refactor: replace `dirname(fileURLToPath(import.meta.url))` with `import.meta.dirname` This change is possible because we no longer support Node.js versions earlier than 20.11.0 --- .../ssr/files/application-builder/server.ts.template | 6 ++---- packages/schematics/angular/ssr/index_spec.ts | 2 +- scripts/build-packages-dist.mts | 3 +-- scripts/build-schema.mts | 5 ++--- scripts/build.mts | 5 ++--- scripts/create.mts | 4 ++-- scripts/devkit-admin.mts | 5 ++--- scripts/json-help.mts | 3 +-- scripts/snapshots.mts | 3 +-- scripts/templates.mts | 3 +-- scripts/validate-user-analytics.mts | 3 +-- .../legacy-cli/e2e/assets/ssr-project-webpack/package.json | 2 +- .../server-routes-output-mode-static-http-calls.ts | 6 ++---- tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts | 6 ++---- tests/legacy-cli/e2e/utils/project.ts | 5 ++--- 15 files changed, 23 insertions(+), 38 deletions(-) diff --git a/packages/schematics/angular/ssr/files/application-builder/server.ts.template b/packages/schematics/angular/ssr/files/application-builder/server.ts.template index 1d07f023a713..adb6684f97b3 100644 --- a/packages/schematics/angular/ssr/files/application-builder/server.ts.template +++ b/packages/schematics/angular/ssr/files/application-builder/server.ts.template @@ -5,11 +5,9 @@ import { writeResponseToNodeResponse, } from '@angular/ssr/node'; import express from 'express'; -import { dirname, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { join } from 'node:path'; -const serverDistFolder = dirname(fileURLToPath(import.meta.url)); -const browserDistFolder = resolve(serverDistFolder, '../<%= browserDistDirectory %>'); +const browserDistFolder = join(import.meta.dirname, '../<%= browserDistDirectory %>'); const app = express(); const angularApp = new AngularNodeAppEngine(); diff --git a/packages/schematics/angular/ssr/index_spec.ts b/packages/schematics/angular/ssr/index_spec.ts index 0330e0f4e623..00c09a701a72 100644 --- a/packages/schematics/angular/ssr/index_spec.ts +++ b/packages/schematics/angular/ssr/index_spec.ts @@ -130,7 +130,7 @@ describe('SSR Schematic', () => { expect(scripts['serve:ssr:test-app']).toBe(`node dist/test-app/node-server/server.mjs`); const serverFileContent = tree.readContent('/projects/test-app/src/server.ts'); - expect(serverFileContent).toContain(`resolve(serverDistFolder, '../public')`); + expect(serverFileContent).toContain(`join(import.meta.dirname, '../public')`); }); it(`removes "outputPath.browser" when it's an empty string`, async () => { diff --git a/scripts/build-packages-dist.mts b/scripts/build-packages-dist.mts index 5bdd7b907048..441a3a2a021a 100644 --- a/scripts/build-packages-dist.mts +++ b/scripts/build-packages-dist.mts @@ -16,14 +16,13 @@ import { BuiltPackage } from '@angular/ng-dev'; import { execSync } from 'node:child_process'; import { chmodSync, copyFileSync, mkdirSync, rmSync } from 'node:fs'; import { dirname, join } from 'node:path'; -import { fileURLToPath } from 'node:url'; import sh from 'shelljs'; /** Name of the Bazel tag that will be used to find release package targets. */ const releaseTargetTag = 'release-package'; /** Path to the project directory. */ -const projectDir = join(dirname(fileURLToPath(import.meta.url)), '../'); +const projectDir = join(import.meta.dirname, '../'); /** Command that runs Bazel. */ const bazelCmd = process.env.BAZEL || `pnpm -s bazel`; diff --git a/scripts/build-schema.mts b/scripts/build-schema.mts index 2f7553e24f51..ffc042af9630 100644 --- a/scripts/build-schema.mts +++ b/scripts/build-schema.mts @@ -8,10 +8,9 @@ import { spawn } from 'node:child_process'; import { rm } from 'node:fs/promises'; -import { dirname, join, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { join, resolve } from 'node:path'; -const __dirname = dirname(fileURLToPath(import.meta.url)); +const __dirname = import.meta.dirname; const baseDir = resolve(`${__dirname}/..`); const bazelCmd = process.env.BAZEL ?? `pnpm -s bazel`; const distRoot = join(baseDir, '/dist-schema/'); diff --git a/scripts/build.mts b/scripts/build.mts index 1b15c026d480..b78df0d6b904 100644 --- a/scripts/build.mts +++ b/scripts/build.mts @@ -9,10 +9,9 @@ import { spawn } from 'node:child_process'; import { COPYFILE_FICLONE } from 'node:constants'; import fs from 'node:fs'; -import path, { dirname, join, relative, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { dirname, join, relative, resolve } from 'node:path'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = import.meta.dirname; const baseDir = resolve(`${__dirname}/..`); const bazelCmd = process.env.BAZEL ?? `pnpm -s bazel`; const distRoot = join(baseDir, '/dist'); diff --git a/scripts/create.mts b/scripts/create.mts index 7b4a78f39f63..9ed02a64b316 100644 --- a/scripts/create.mts +++ b/scripts/create.mts @@ -10,7 +10,7 @@ import assert from 'node:assert'; import * as child_process from 'node:child_process'; import { copyFile, readFile, rm, writeFile } from 'node:fs/promises'; import * as path from 'node:path'; -import { fileURLToPath, pathToFileURL } from 'node:url'; +import { pathToFileURL } from 'node:url'; import build from './build.mjs'; import { packages } from './packages.mjs'; @@ -18,7 +18,7 @@ export interface CreateOptions extends Record { _: string[]; } -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = import.meta.dirname; async function _exec(command: string, args: string[], opts: { cwd?: string }) { const { status, error, stderr, stdout } = child_process.spawnSync(command, args, { ...opts }); diff --git a/scripts/devkit-admin.mts b/scripts/devkit-admin.mts index 74a9e176db6b..3240759f3b54 100644 --- a/scripts/devkit-admin.mts +++ b/scripts/devkit-admin.mts @@ -8,8 +8,7 @@ */ import colors from 'ansi-colors'; -import path, { dirname } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import path from 'node:path'; import yargsParser from 'yargs-parser'; const args = yargsParser(process.argv.slice(2), { @@ -21,7 +20,7 @@ const args = yargsParser(process.argv.slice(2), { const scriptName = args._.shift(); const cwd = process.cwd(); -const scriptDir = dirname(fileURLToPath(import.meta.url)); +const scriptDir = import.meta.dirname; process.chdir(path.join(scriptDir, '..')); const originalConsole = { ...console }; diff --git a/scripts/json-help.mts b/scripts/json-help.mts index c0b62162d875..34271a8925bc 100644 --- a/scripts/json-help.mts +++ b/scripts/json-help.mts @@ -10,10 +10,9 @@ import { spawnSync } from 'node:child_process'; import { promises as fs } from 'node:fs'; import * as os from 'node:os'; import * as path from 'node:path'; -import { fileURLToPath } from 'node:url'; import create from './create.mjs'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = import.meta.dirname; export async function createTemporaryProject(): Promise { console.info('Creating temporary project...'); diff --git a/scripts/snapshots.mts b/scripts/snapshots.mts index 6f29e6ef80c3..1e7a751aeab2 100644 --- a/scripts/snapshots.mts +++ b/scripts/snapshots.mts @@ -10,12 +10,11 @@ import { execSync, spawnSync } from 'node:child_process'; import * as fs from 'node:fs'; import * as os from 'node:os'; import * as path from 'node:path'; -import { fileURLToPath } from 'node:url'; import build from './build.mjs'; import jsonHelp, { createTemporaryProject } from './json-help.mjs'; import { PackageInfo, packages } from './packages.mjs'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = import.meta.dirname; // Added to the README.md of the snapshot. This is markdown. const readmeHeaderFn = (name: string, snapshotRepo: string) => ` diff --git a/scripts/templates.mts b/scripts/templates.mts index 11ef2b385bdd..06623a193a4d 100644 --- a/scripts/templates.mts +++ b/scripts/templates.mts @@ -9,10 +9,9 @@ import lodash from 'lodash'; import * as fs from 'node:fs'; import * as path from 'node:path'; -import { fileURLToPath } from 'node:url'; import { releasePackages } from './packages.mjs'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = import.meta.dirname; async function _runTemplate(inputPath: string, outputPath: string) { inputPath = path.resolve(__dirname, inputPath); diff --git a/scripts/validate-user-analytics.mts b/scripts/validate-user-analytics.mts index b91556c752b0..521e17bbf924 100644 --- a/scripts/validate-user-analytics.mts +++ b/scripts/validate-user-analytics.mts @@ -11,14 +11,13 @@ import lodash from 'lodash'; import assert from 'node:assert'; import * as fs from 'node:fs'; import * as path from 'node:path'; -import { fileURLToPath } from 'node:url'; import { EventCustomDimension, EventCustomMetric, UserCustomDimension, } from '../packages/angular/cli/src/analytics/analytics-parameters.mjs'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = import.meta.dirname; const userAnalyticsTable = lodash.template( fs.readFileSync(path.join(__dirname, './templates/user-analytics-table.ejs'), 'utf-8'), ); diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json b/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json index ad0518bc97bd..607ff8d87288 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json +++ b/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json @@ -35,7 +35,7 @@ "@types/express": "^4.17.17", "@types/jasmine": "~4.3.0", "@types/mime": "^3.0.0", - "@types/node": "^18.18.0", + "@types/node": "^20.17.19", "jasmine-core": "~4.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts index 8b4ff005cbe5..d802b0271615 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts @@ -77,13 +77,11 @@ export default async function () { 'src/server.ts': ` import { AngularNodeAppEngine, writeResponseToNodeResponse, isMainModule, createNodeRequestHandler } from '@angular/ssr/node'; import express from 'express'; - import { fileURLToPath } from 'node:url'; - import { dirname, resolve } from 'node:path'; + import { join } from 'node:path'; export function app(): express.Express { const server = express(); - const serverDistFolder = dirname(fileURLToPath(import.meta.url)); - const browserDistFolder = resolve(serverDistFolder, '../browser'); + const browserDistFolder = join(import.meta.dirname, '../browser'); const angularNodeAppEngine = new AngularNodeAppEngine(); server.get('/api', (req, res) => res.json({ dataFromAPI: true })); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts index 477862d61d70..18e43f7212a0 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts @@ -39,13 +39,11 @@ export default async function () { 'src/server.ts': ` import { AngularNodeAppEngine, writeResponseToNodeResponse, isMainModule, createNodeRequestHandler } from '@angular/ssr/node'; import express from 'express'; - import { fileURLToPath } from 'node:url'; - import { dirname, resolve } from 'node:path'; + import { join } from 'node:path'; export function app(): express.Express { const server = express(); - const serverDistFolder = dirname(fileURLToPath(import.meta.url)); - const browserDistFolder = resolve(serverDistFolder, '../browser'); + const browserDistFolder = join(import.meta.dirname, '../browser'); const angularNodeAppEngine = new AngularNodeAppEngine(); server.use('/api/**', (req, res) => res.json({ hello: 'foo' })); diff --git a/tests/legacy-cli/e2e/utils/project.ts b/tests/legacy-cli/e2e/utils/project.ts index 64419ccc1873..42d86bb7a997 100644 --- a/tests/legacy-cli/e2e/utils/project.ts +++ b/tests/legacy-cli/e2e/utils/project.ts @@ -212,14 +212,13 @@ export function updateServerFileForWebpack(filepath: string): Promise { import { APP_BASE_HREF } from '@angular/common'; import { CommonEngine } from '@angular/ssr/node'; import express from 'express'; - import { fileURLToPath } from 'node:url'; - import { dirname, join, resolve } from 'node:path'; + import { join, resolve } from 'node:path'; import bootstrap from './main.server'; // The Express app is exported so that it can be used by serverless Functions. export function app(): express.Express { const server = express(); - const serverDistFolder = dirname(fileURLToPath(import.meta.url)); + const serverDistFolder = import.meta.dirname; const browserDistFolder = resolve(serverDistFolder, '../browser'); const indexHtml = join(serverDistFolder, 'index.server.html'); From 9e6b9b5379d0448578b3bfb6100852dea7febe75 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Fri, 21 Mar 2025 10:15:38 +0100 Subject: [PATCH 054/160] fix(@schematics/angular): add type checking of host bindings to strict config Adds the `typeCheckHostBindings` flag when the user has opted into strict type checking. --- .../schematics/angular/workspace/files/tsconfig.json.template | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/schematics/angular/workspace/files/tsconfig.json.template b/packages/schematics/angular/workspace/files/tsconfig.json.template index 45c41bcc800d..92d84123aeee 100644 --- a/packages/schematics/angular/workspace/files/tsconfig.json.template +++ b/packages/schematics/angular/workspace/files/tsconfig.json.template @@ -20,6 +20,7 @@ "enableI18nLegacyMessageIdFormat": false<% if (strict) { %>, "strictInjectionParameters": true, "strictInputAccessModifiers": true, + "typeCheckHostBindings": true, "strictTemplates": true<% } %> } } From a8817a3b2a9a94bdfcba4bf690e217e7d2d4686c Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 21 Mar 2025 07:28:30 +0000 Subject: [PATCH 055/160] fix(@angular/build): handle undefined `getOrCreateAngularServerApp` during error compilation Enhanced error handling to account for cases where `getOrCreateAngularServerApp` is undefined during the compilation process. This prevents unexpected crashes and improves build stability. Closes #29907 --- .../src/tools/vite/middlewares/ssr-middleware.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts index 36e602491fd4..387a94a2ba53 100644 --- a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts @@ -40,15 +40,16 @@ export function createAngularSsrInternalMiddleware( const { writeResponseToNodeResponse, createWebRequestFromNodeRequest } = await loadEsmModule('@angular/ssr/node'); - // The following is necessary because accessing the module after invalidation may result in an empty module, - // which can trigger a `TypeError: ɵgetOrCreateAngularServerApp is not a function` error. - // TODO: look into why. - await server.ssrLoadModule('/main.server.mjs'); - const { ɵgetOrCreateAngularServerApp } = (await server.ssrLoadModule('/main.server.mjs')) as { ɵgetOrCreateAngularServerApp: typeof getOrCreateAngularServerApp; }; + // `ɵgetOrCreateAngularServerApp` can be undefined right after an error. + // See: https://github.com/angular/angular-cli/issues/29907 + if (!ɵgetOrCreateAngularServerApp) { + return next(); + } + const angularServerApp = ɵgetOrCreateAngularServerApp({ allowStaticRouteRender: true, }); From 6bd7b9b4a59240caa4f19185570aec8263d8a0a7 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 21 Mar 2025 09:11:46 +0000 Subject: [PATCH 056/160] perf(@angular/ssr): optimized request handling performance This commit refactors request handling logic, leading to significant performance improvements. **Benchmark** | Metric | 19.2.x Branch | Main Branch | After Optimization | Improvement vs 19.2.x | Improvement vs Main | |--------------------|-----------------------|----------------------|---------------------|-----------------------|-----------------------| | Latency (Avg) | 2473.94 ms | 2655.35 ms | 2385.85 ms | ~3.6% | ~10.1% | | Latency (50%) | 2445.67 ms | 2615 ms | 2416.33 ms | ~1.2% | ~7.6% | | Latency (97.5%) | 2640.5 ms | 3309 ms | 2561.5 ms | ~3.0% | ~22.6% | | Req/Sec (Avg) | 398.32 | 364.54 | 400.12 | ~0.4% | ~9.8% | | Bytes/Sec (Avg) | 8.41 MB | 7.7 MB | 8.45 MB | ~0.5% | ~9.7% | | Total Requests | 13,000 | 12,000 | 13,000 | 0% | ~8.3% | **Test Details:** * **Command:** `npx autocannon -c 100 -d 30 -p 10 http://localhost:` * **Parameters:** * `-c 100`: 100 concurrent connections * `-d 30`: 30 seconds duration * `-p 10`: 10 pipelining factor * **Iterations:** 3 tests were run on each of the Main Branch and the 19.2.x Branch, and 3 tests were run after optimization. Average of each set of tests was used for the comparison. * **Samples:** 30 samples were collected per test run for Req/Bytes counts. The optimized request handling logic (After Optimization) shows significant improvements across all key performance metrics compared to the original logic on the Main Branch. The regression observed in the Main Branch is attributed to the newly added header flushing logic. When compared to the 19.2.x branch, the optimized code delivers similar performance. Latency is slightly reduced, while request throughput (Req/Sec) and data transfer rate (Bytes/Sec) have seen a slight increase. The total number of requests handled remains consistent with the 19.2.x branch. --- packages/angular/ssr/src/utils/ng.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index d43ffdefc1dc..98c0e7be99d2 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -95,13 +95,16 @@ export async function renderAngular( await applicationRef.whenStable(); return { - content: async () => { - try { - return renderInternal(platformRef, applicationRef); - } finally { - await asyncDestroyPlatform(platformRef); - } - }, + content: () => + new Promise((resolve, reject) => { + // Defer rendering to the next event loop iteration to avoid blocking, as most operations in `renderInternal` are synchronous. + setTimeout(() => { + renderInternal(platformRef, applicationRef) + .then(resolve) + .catch(reject) + .finally(() => void asyncDestroyPlatform(platformRef)); + }, 0); + }), }; } catch (error) { await asyncDestroyPlatform(platformRef); From eee6f3b303f4b4aeb93e384ded7123f26c6bef98 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 21 Mar 2025 13:09:31 +0000 Subject: [PATCH 057/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 44 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 36 +++++++-------- package.json | 6 +-- pnpm-lock.yaml | 37 ++++++++-------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++------- 9 files changed, 85 insertions(+), 84 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index c07379bfd3bc..9cd2e2d37ae8 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@27078026111b01a7202449e9788ce38f2b2e103f + - uses: angular/dev-infra/github-actions/branch-manager@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e89e3d795690..fc0379216071 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -57,11 +57,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -81,13 +81,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -102,7 +102,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -123,13 +123,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -145,13 +145,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -163,13 +163,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -197,11 +197,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 83a9c371e4a9..47bc1588061e 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@27078026111b01a7202449e9788ce38f2b2e103f + - uses: angular/dev-infra/github-actions/commit-message-based-labels@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@27078026111b01a7202449e9788ce38f2b2e103f + - uses: angular/dev-infra/github-actions/post-approval-changes@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index a7e96ea37682..3eb38a7dc0cb 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@27078026111b01a7202449e9788ce38f2b2e103f + - uses: angular/dev-infra/github-actions/feature-request@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 1fae8b3d706d..2f2e755fd707 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 8c80958ba610..92251d73c792 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/linting/licenses@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,7 +130,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -149,13 +149,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -172,12 +172,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@27078026111b01a7202449e9788ce38f2b2e103f + uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index dc8dc7a124ee..60391ab910c9 100644 --- a/package.json +++ b/package.json @@ -47,15 +47,15 @@ "homepage": "https://github.com/angular/angular-cli", "devDependencies": { "@angular/animations": "20.0.0-next.3", - "@angular/cdk": "20.0.0-next.2", + "@angular/cdk": "20.0.0-next.3", "@angular/common": "20.0.0-next.3", "@angular/compiler": "20.0.0-next.3", "@angular/compiler-cli": "20.0.0-next.3", "@angular/core": "20.0.0-next.3", "@angular/forms": "20.0.0-next.3", "@angular/localize": "20.0.0-next.3", - "@angular/material": "20.0.0-next.2", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#d25ced20c12ad010c2b5b560acb78065f8d6564e", + "@angular/material": "20.0.0-next.3", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#3e60055cec07598ad7160ba36dd08bf57ae2be98", "@angular/platform-browser": "20.0.0-next.3", "@angular/platform-server": "20.0.0-next.3", "@angular/router": "20.0.0-next.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c60d409a38c..e8675ff198bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: 20.0.0-next.3 version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/cdk': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/common': specifier: 20.0.0-next.3 version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) @@ -39,11 +39,11 @@ importers: specifier: 20.0.0-next.3 version: 20.0.0-next.3(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(@angular/compiler@20.0.0-next.3) '@angular/material': - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(l4pblaphm2g3pnybzkb7drskpi) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(ytwihe4lr4cvkw42tsewzwfy4m) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#d25ced20c12ad010c2b5b560acb78065f8d6564e - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d25ced20c12ad010c2b5b560acb78065f8d6564e(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#3e60055cec07598ad7160ba36dd08bf57ae2be98 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3e60055cec07598ad7160ba36dd08bf57ae2be98(encoding@0.1.13) '@angular/platform-browser': specifier: 20.0.0-next.3 version: 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) @@ -904,8 +904,8 @@ packages: peerDependencies: '@angular/core': 20.0.0-next.3 - '@angular/cdk@20.0.0-next.2': - resolution: {integrity: sha512-yq50dLK9LW8byFneLG8S37CtYCHrRE3gKz0zcW+2t4o4LgRpZw/pS9mkpzF79xGmeH+Bidgm6CgzXpKPAO+SNA==} + '@angular/cdk@20.0.0-next.3': + resolution: {integrity: sha512-xO5UPD1jsnS5NWU8XiUoU99MRkZiHozPPcPvQxF46j7O/MED5JJLDgGdmFa4DOPX018SmRFHKw2PVLvmgM7FKA==} peerDependencies: '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 @@ -958,19 +958,19 @@ packages: '@angular/compiler': 20.0.0-next.3 '@angular/compiler-cli': 20.0.0-next.3 - '@angular/material@20.0.0-next.2': - resolution: {integrity: sha512-rF6JHrSPBgNWidQ6vpFrdO35lMdkb3o/yeAq7shtmV9beUdproavGqniBriviNO60aGJvRl2bXeZNFNP8zUWJQ==} + '@angular/material@20.0.0-next.3': + resolution: {integrity: sha512-TtwuOA8E9+G+ttNnhNL9S6dwphXQHf22os5/5HjfPBanBl/yEv4JypmW9FnrqSMCBRE4H4o2m4Tq0Jr7A3q45Q==} peerDependencies: - '@angular/cdk': 20.0.0-next.2 + '@angular/cdk': 20.0.0-next.3 '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/forms': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d25ced20c12ad010c2b5b560acb78065f8d6564e': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d25ced20c12ad010c2b5b560acb78065f8d6564e} - version: 0.0.0-27078026111b01a7202449e9788ce38f2b2e103f + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3e60055cec07598ad7160ba36dd08bf57ae2be98': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3e60055cec07598ad7160ba36dd08bf57ae2be98} + version: 0.0.0-78bd12c8526c396fc85e5ac3d72c039dc7e0a51a hasBin: true '@angular/platform-browser@20.0.0-next.3': @@ -6570,6 +6570,7 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qjobs@1.2.0: @@ -7969,7 +7970,7 @@ snapshots: '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/cdk@20.0.0-next.2(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/cdk@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) @@ -8030,9 +8031,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@20.0.0-next.2(l4pblaphm2g3pnybzkb7drskpi)': + '@angular/material@20.0.0-next.3(ytwihe4lr4cvkw42tsewzwfy4m)': dependencies: - '@angular/cdk': 20.0.0-next.2(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/cdk': 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) @@ -8040,7 +8041,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d25ced20c12ad010c2b5b560acb78065f8d6564e(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3e60055cec07598ad7160ba36dd08bf57ae2be98(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.0(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 88f497ae8ae6..982d71943f61 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#e101708677171e99d559e1efa0de8dfcdb36f3cf", - "@angular/cdk": "github:angular/cdk-builds#a6a190f972cce775d98700d479b11da7c46c2c56", - "@angular/common": "github:angular/common-builds#1b4891c46e12bdc932eeec437e77a0743e1965ed", - "@angular/compiler": "github:angular/compiler-builds#61a6fdd8d270d5e139d05e3cd00563d1a7662f7e", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#c485d00f119f2ec4eef974d3aa1dfa24756d617a", - "@angular/core": "github:angular/core-builds#71954c2ccf6f69cd859dda23e680f12ad2312993", - "@angular/forms": "github:angular/forms-builds#3ae8c990600d5ece018bb8b10e1b324886afbc6d", - "@angular/language-service": "github:angular/language-service-builds#7688bea4d28c71093f706a83759adb4bdd64cb3d", - "@angular/localize": "github:angular/localize-builds#1ffbe873047872f0442c60778e59e9eda076f8ab", - "@angular/material": "github:angular/material-builds#dd8210be210cca8b250237b4cd7188b104cbb5a3", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#860960b97108877795ace821318151507c3b3ae2", - "@angular/platform-browser": "github:angular/platform-browser-builds#290996f4ad051ecc3783b919001330aa9d2a6af7", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#662143b17fc72dd08b7e3640ce44e10f26bbf1b6", - "@angular/platform-server": "github:angular/platform-server-builds#d356ffb8c07fb8e71859c67ade62e9f053cab327", - "@angular/router": "github:angular/router-builds#c1805e60ba8e0ba1f790bd7c742879f08ab81593", - "@angular/service-worker": "github:angular/service-worker-builds#7635d1c5f47639260747d8dfc057d8c8f7d6aacb" + "@angular/animations": "github:angular/animations-builds#867a09504c66a3a8ffe429e94ed1682040c18558", + "@angular/cdk": "github:angular/cdk-builds#43c25a9986fec47ec5a2f05117d1f4e428c58232", + "@angular/common": "github:angular/common-builds#f1fa14d1f8d9dd3ef5ea246a2a23a89897b4c444", + "@angular/compiler": "github:angular/compiler-builds#c2e2158a0cac646352d554df3ab5f56d68c0239e", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#d81e98e0bac4ba59c5581efd5853b62b3c8fee47", + "@angular/core": "github:angular/core-builds#fcced2cb4536cfe4fb984c7a942fdcf218d38c29", + "@angular/forms": "github:angular/forms-builds#2e91fe997fc64fc401be893cba8eda42357e43d9", + "@angular/language-service": "github:angular/language-service-builds#85eb89f2fde140863357bae9a6ca54c6aa5281a1", + "@angular/localize": "github:angular/localize-builds#de31b308c2468f9010781349b68e5c7865603109", + "@angular/material": "github:angular/material-builds#5326e7142ca706c78c9689d0cb1899d62d05b119", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#da7038ab5a9792b62eb57cc64d7f52a5a532e5b3", + "@angular/platform-browser": "github:angular/platform-browser-builds#0d6c876d98c04e1b7c6fbdbc2ece9a2efafebdac", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0f3df5b8f09f57fc9ddd51df9ef7b9981d4abb97", + "@angular/platform-server": "github:angular/platform-server-builds#94f1b60d5de7454f48221379b114bcb1d1337a50", + "@angular/router": "github:angular/router-builds#ea0c78dc4bf623aee71c472ec55b8b8fb9750ae3", + "@angular/service-worker": "github:angular/service-worker-builds#7ecbfbbbc139aebd98824add3b1fbfddb84ee767" } } From a910fe9ae0423146f6509c5b9c45c88415365c9f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 20 Mar 2025 13:19:40 -0400 Subject: [PATCH 058/160] fix(@schematics/angular): remove explicit `outputPath` option value from generated applications The `outputPath` option now defaults to `dist/` for applications. This removes the need to explicitly set the option within a newly generated project. The value removal also reduces the overall size of the `angular.json` configuration for new projects. Existing projects are not modified by this change. --- packages/schematics/angular/application/index.ts | 1 - packages/schematics/angular/ssr/index.ts | 9 +++------ packages/schematics/angular/ssr/index_spec.ts | 4 ++-- tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts | 1 + tests/legacy-cli/e2e/tests/build/rebuild-dot-dirname.ts | 1 + tests/legacy-cli/e2e/tests/build/relative-sourcemap.ts | 1 + 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 875c3ced481b..55a26b243ec6 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -236,7 +236,6 @@ function addAppToWorkspaceFile( builder: Builders.BuildApplication, defaultConfiguration: 'production', options: { - outputPath: `dist/${folderName}`, index: `${sourceRoot}/index.html`, browser: `${sourceRoot}/main.ts`, polyfills: options.experimentalZoneless ? [] : ['zone.js'], diff --git a/packages/schematics/angular/ssr/index.ts b/packages/schematics/angular/ssr/index.ts index b73c161bd5b5..b6352428079f 100644 --- a/packages/schematics/angular/ssr/index.ts +++ b/packages/schematics/angular/ssr/index.ts @@ -81,12 +81,9 @@ async function getApplicationBuilderOutputPaths( throw new SchematicsException(`Cannot find 'options' for ${projectName} ${target} target.`); } - const { outputPath } = architectTarget.options; - if (outputPath === null || outputPath === undefined) { - throw new SchematicsException( - `outputPath for ${projectName} ${target} target is undefined or null.`, - ); - } + let { outputPath } = architectTarget.options; + // Use default if not explicitly specified + outputPath ??= posix.join('dist', projectName); const defaultDirs = { server: DEFAULT_SERVER_DIR, diff --git a/packages/schematics/angular/ssr/index_spec.ts b/packages/schematics/angular/ssr/index_spec.ts index 00c09a701a72..a9f4eff7ac5e 100644 --- a/packages/schematics/angular/ssr/index_spec.ts +++ b/packages/schematics/angular/ssr/index_spec.ts @@ -118,7 +118,7 @@ describe('SSR Schematic', () => { const build = config.projects['test-app'].architect.build; build.options.outputPath = { - base: build.options.outputPath, + base: 'dist/test-app', browser: 'public', server: 'node-server', }; @@ -139,7 +139,7 @@ describe('SSR Schematic', () => { const build = config.projects['test-app'].architect.build; build.options.outputPath = { - base: build.options.outputPath, + base: 'dist/test-app', browser: '', server: 'node-server', }; diff --git a/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts index f307f8de9c0d..8ce44ea32386 100644 --- a/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts @@ -23,6 +23,7 @@ export default async function () { main: build.options.browser, browser: undefined, buildOptimizer: false, + outputPath: 'dist/test-project-two', }; build.configurations.development = { diff --git a/tests/legacy-cli/e2e/tests/build/rebuild-dot-dirname.ts b/tests/legacy-cli/e2e/tests/build/rebuild-dot-dirname.ts index 8eaba61f5fdc..ca6ab8ad2886 100644 --- a/tests/legacy-cli/e2e/tests/build/rebuild-dot-dirname.ts +++ b/tests/legacy-cli/e2e/tests/build/rebuild-dot-dirname.ts @@ -33,6 +33,7 @@ export default async function () { ...build.options, main: build.options.browser, browser: undefined, + outputPath: 'dist/subdirectory-test-project', }; build.configurations.development = { diff --git a/tests/legacy-cli/e2e/tests/build/relative-sourcemap.ts b/tests/legacy-cli/e2e/tests/build/relative-sourcemap.ts index 598661d873e1..789b52748796 100644 --- a/tests/legacy-cli/e2e/tests/build/relative-sourcemap.ts +++ b/tests/legacy-cli/e2e/tests/build/relative-sourcemap.ts @@ -18,6 +18,7 @@ export default async function () { ...build.options, main: build.options.browser, browser: undefined, + outputPath: 'dist/secondary-project', }; build.configurations.development = { From 1e478ed8edb67809c56babe71b50a68c263efd84 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 21 Mar 2025 20:04:03 +0000 Subject: [PATCH 059/160] build: update devinfra digest to ad960c2 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index f7cc0e4712d9..f40fc60b49c1 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "27078026111b01a7202449e9788ce38f2b2e103f", + commit = "ad960c29189d0bfccbd35c4d47d3d7bff9da3666", remote = "https://github.com/angular/dev-infra.git", ) From 4d49a6674a15ba3ff5b36dee374e195a3f58e6a0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 24 Mar 2025 07:03:21 +0000 Subject: [PATCH 060/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 44 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 36 +++++++-------- package.json | 2 +- pnpm-lock.yaml | 28 +++++++----- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++------- 9 files changed, 81 insertions(+), 75 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 9cd2e2d37ae8..771a448c546f 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + - uses: angular/dev-infra/github-actions/branch-manager@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fc0379216071..87d56d850233 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -57,11 +57,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -81,13 +81,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -102,7 +102,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -123,13 +123,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -145,13 +145,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -163,13 +163,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -197,11 +197,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 47bc1588061e..0ae6d2646a65 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + - uses: angular/dev-infra/github-actions/commit-message-based-labels@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + - uses: angular/dev-infra/github-actions/post-approval-changes@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 3eb38a7dc0cb..98ff10e0ff0d 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + - uses: angular/dev-infra/github-actions/feature-request@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 2f2e755fd707..e1b0249f7782 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 92251d73c792..74eb970f59a6 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/linting/licenses@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,7 +130,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -149,13 +149,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -172,12 +172,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index 60391ab910c9..c01e4e2e1f7b 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "20.0.0-next.3", "@angular/localize": "20.0.0-next.3", "@angular/material": "20.0.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#3e60055cec07598ad7160ba36dd08bf57ae2be98", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e6534df23185ef6242fa2a6c04ca9567af750acb", "@angular/platform-browser": "20.0.0-next.3", "@angular/platform-server": "20.0.0-next.3", "@angular/router": "20.0.0-next.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e8675ff198bf..bfb7e33ab26f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: 20.0.0-next.3 version: 20.0.0-next.3(ytwihe4lr4cvkw42tsewzwfy4m) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#3e60055cec07598ad7160ba36dd08bf57ae2be98 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3e60055cec07598ad7160ba36dd08bf57ae2be98(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e6534df23185ef6242fa2a6c04ca9567af750acb + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e6534df23185ef6242fa2a6c04ca9567af750acb(encoding@0.1.13) '@angular/platform-browser': specifier: 20.0.0-next.3 version: 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) @@ -968,9 +968,9 @@ packages: '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3e60055cec07598ad7160ba36dd08bf57ae2be98': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3e60055cec07598ad7160ba36dd08bf57ae2be98} - version: 0.0.0-78bd12c8526c396fc85e5ac3d72c039dc7e0a51a + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e6534df23185ef6242fa2a6c04ca9567af750acb': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e6534df23185ef6242fa2a6c04ca9567af750acb} + version: 0.0.0-ad960c29189d0bfccbd35c4d47d3d7bff9da3666 hasBin: true '@angular/platform-browser@20.0.0-next.3': @@ -1742,12 +1742,16 @@ packages: resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} engines: {node: '>=14.0.0'} + '@google-cloud/promisify@4.0.0': + resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} + engines: {node: '>=14'} + '@google-cloud/promisify@4.1.0': resolution: {integrity: sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==} engines: {node: '>=18'} - '@google-cloud/spanner@7.19.0': - resolution: {integrity: sha512-EQUGFc6l5h4spSbVKtURt+6OY+vFkACkXvdcDFISwB2++VWigeTOE0gFVJMUrko0HaKxOKfWW80+GYZCUToTcA==} + '@google-cloud/spanner@7.19.1': + resolution: {integrity: sha512-a7WlM4T3g5hslSBxQpsCxlH2IGgeVVEnDP5/v51kNlKv/W5PhBMqaHanodkUjbjegsQNlWAkqLClzIwtldfSXg==} engines: {node: '>=14.0.0'} '@grpc/grpc-js@1.13.0': @@ -8041,9 +8045,9 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3e60055cec07598ad7160ba36dd08bf57ae2be98(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e6534df23185ef6242fa2a6c04ca9567af750acb(encoding@0.1.13)': dependencies: - '@google-cloud/spanner': 7.19.0(encoding@0.1.13)(supports-color@10.0.0) + '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 '@types/semver': 7.5.8 '@types/supports-color': 10.0.0 @@ -8922,14 +8926,16 @@ snapshots: '@google-cloud/projectify@4.0.0': {} + '@google-cloud/promisify@4.0.0': {} + '@google-cloud/promisify@4.1.0': {} - '@google-cloud/spanner@7.19.0(encoding@0.1.13)(supports-color@10.0.0)': + '@google-cloud/spanner@7.19.1(encoding@0.1.13)(supports-color@10.0.0)': dependencies: '@google-cloud/common': 5.0.2(encoding@0.1.13)(supports-color@10.0.0) '@google-cloud/precise-date': 4.0.0 '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.1.0 + '@google-cloud/promisify': 4.0.0 '@grpc/proto-loader': 0.7.13 '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 982d71943f61..6f199c10352e 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#867a09504c66a3a8ffe429e94ed1682040c18558", - "@angular/cdk": "github:angular/cdk-builds#43c25a9986fec47ec5a2f05117d1f4e428c58232", - "@angular/common": "github:angular/common-builds#f1fa14d1f8d9dd3ef5ea246a2a23a89897b4c444", - "@angular/compiler": "github:angular/compiler-builds#c2e2158a0cac646352d554df3ab5f56d68c0239e", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#d81e98e0bac4ba59c5581efd5853b62b3c8fee47", - "@angular/core": "github:angular/core-builds#fcced2cb4536cfe4fb984c7a942fdcf218d38c29", - "@angular/forms": "github:angular/forms-builds#2e91fe997fc64fc401be893cba8eda42357e43d9", - "@angular/language-service": "github:angular/language-service-builds#85eb89f2fde140863357bae9a6ca54c6aa5281a1", - "@angular/localize": "github:angular/localize-builds#de31b308c2468f9010781349b68e5c7865603109", - "@angular/material": "github:angular/material-builds#5326e7142ca706c78c9689d0cb1899d62d05b119", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#da7038ab5a9792b62eb57cc64d7f52a5a532e5b3", - "@angular/platform-browser": "github:angular/platform-browser-builds#0d6c876d98c04e1b7c6fbdbc2ece9a2efafebdac", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0f3df5b8f09f57fc9ddd51df9ef7b9981d4abb97", - "@angular/platform-server": "github:angular/platform-server-builds#94f1b60d5de7454f48221379b114bcb1d1337a50", - "@angular/router": "github:angular/router-builds#ea0c78dc4bf623aee71c472ec55b8b8fb9750ae3", - "@angular/service-worker": "github:angular/service-worker-builds#7ecbfbbbc139aebd98824add3b1fbfddb84ee767" + "@angular/animations": "github:angular/animations-builds#59ce2356b542c352581b29c38a3eab070f5ed185", + "@angular/cdk": "github:angular/cdk-builds#a57ec0e4ef294c4e237bfa3e4908827c7e8b12dd", + "@angular/common": "github:angular/common-builds#c457c2b45626bce7002fd0690b0da3cd81744b50", + "@angular/compiler": "github:angular/compiler-builds#2f0b4a6e1b153939b6de4c0abf1c0af1eb0216a5", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#5b846c08462a9a3413aa4ff69a36f2a05ae90260", + "@angular/core": "github:angular/core-builds#f35cee9b24c84a77c9ace483cf335c6b58bbcc76", + "@angular/forms": "github:angular/forms-builds#e9d812b1ce0ab182f13cf457e50165e9f1601562", + "@angular/language-service": "github:angular/language-service-builds#9bc2b9ac38049bb5e6c8ccf6ef20505c78831b40", + "@angular/localize": "github:angular/localize-builds#0e13b1fcdedb5c4fdc9ee0b25097d5e80beab6da", + "@angular/material": "github:angular/material-builds#86c37a63f168cf5d8501c2456f7e70b4dd24eb9b", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#9c396c05ddc950fc894bfb73d2e7637b1a42081b", + "@angular/platform-browser": "github:angular/platform-browser-builds#8b728ec63f939b382df120bd6f920903c89935a5", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b080b3304d5008d6f0c4a195dae79055e1b04a9b", + "@angular/platform-server": "github:angular/platform-server-builds#4e6515d2b833c63bd84c6963e1f82da4c49cb0f0", + "@angular/router": "github:angular/router-builds#02191447bc1b13905964b1f9747faaa6b3ecd5ea", + "@angular/service-worker": "github:angular/service-worker-builds#cf677d645e0ffb2c99c5a8201ba3be9933441d32" } } From e816d46e4b0ab441ae63ae0a734817709140da87 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 24 Mar 2025 10:03:28 +0000 Subject: [PATCH 061/160] build: update all non-major dependencies --- WORKSPACE | 6 +- package.json | 8 +- packages/angular/build/package.json | 4 +- pnpm-lock.yaml | 381 ++++++++++++++-------------- 4 files changed, 204 insertions(+), 195 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index f40fc60b49c1..b87377b8f841 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -31,9 +31,9 @@ build_bazel_rules_nodejs_dependencies() http_archive( name = "aspect_rules_js", - sha256 = "d66f8abf914a0454a69181b7b17acaae56d7b0e2784cb26b40cb3273c4d836d1", - strip_prefix = "rules_js-2.2.0", - url = "https://github.com/aspect-build/rules_js/releases/download/v2.2.0/rules_js-v2.2.0.tar.gz", + sha256 = "7ee67690ed4d6b5c8cbf6d47bb68b639192a29397a9fe3d513981fecc25a5653", + strip_prefix = "rules_js-2.3.2", + url = "https://github.com/aspect-build/rules_js/releases/download/v2.3.2/rules_js-v2.3.2.tar.gz", ) load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") diff --git a/package.json b/package.json index c01e4e2e1f7b..43121238d5a2 100644 --- a/package.json +++ b/package.json @@ -63,8 +63,8 @@ "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "8.0.3", "@eslint/compat": "1.2.7", - "@eslint/eslintrc": "3.3.0", - "@eslint/js": "9.22.0", + "@eslint/eslintrc": "3.3.1", + "@eslint/js": "9.23.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-json": "^6.1.0", @@ -102,7 +102,7 @@ "buffer": "6.0.3", "esbuild": "0.25.1", "esbuild-wasm": "0.25.1", - "eslint": "9.22.0", + "eslint": "9.23.0", "eslint-config-prettier": "10.1.1", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.31.0", @@ -129,7 +129,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.0.171", - "rollup": "4.36.0", + "rollup": "4.37.0", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "semver": "7.7.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 53002a2a5163..e0afb9007137 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,12 +38,12 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.9.2", - "rollup": "4.36.0", + "rollup": "4.37.0", "sass": "1.86.0", "semver": "7.7.1", "source-map-support": "0.5.21", "tinyglobby": "0.2.12", - "vite": "6.2.2", + "vite": "6.2.3", "watchpack": "2.4.2" }, "optionalDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bfb7e33ab26f..9e57c44ba7da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,28 +64,28 @@ importers: version: 8.0.3 '@eslint/compat': specifier: 1.2.7 - version: 1.2.7(eslint@9.22.0(jiti@1.21.7)) + version: 1.2.7(eslint@9.23.0(jiti@1.21.7)) '@eslint/eslintrc': - specifier: 3.3.0 - version: 3.3.0 + specifier: 3.3.1 + version: 3.3.1 '@eslint/js': - specifier: 9.22.0 - version: 9.22.0 + specifier: 9.23.0 + version: 9.23.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.36.0) + version: 5.1.1(rollup@4.37.0) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.3(rollup@4.36.0) + version: 28.0.3(rollup@4.37.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.36.0) + version: 6.1.0(rollup@4.37.0) '@rollup/plugin-node-resolve': specifier: ^13.0.5 - version: 13.3.0(rollup@4.36.0) + version: 13.3.0(rollup@4.37.0) '@stylistic/eslint-plugin': specifier: ^4.0.0 - version: 4.2.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + version: 4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -160,10 +160,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.27.0 - version: 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + version: 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) '@typescript-eslint/parser': specifier: 8.27.0 - version: 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + version: 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) ajv: specifier: 8.17.1 version: 8.17.1 @@ -183,17 +183,17 @@ importers: specifier: 0.25.1 version: 0.25.1 eslint: - specifier: 9.22.0 - version: 9.22.0(jiti@1.21.7) + specifier: 9.23.0 + version: 9.23.0(jiti@1.21.7) eslint-config-prettier: specifier: 10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@1.21.7)) + version: 10.1.1(eslint@9.23.0(jiti@1.21.7)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.22.0(jiti@1.21.7)) + version: 3.1.1(eslint@9.23.0(jiti@1.21.7)) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7)) + version: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)) express: specifier: 4.21.2 version: 4.21.2 @@ -264,14 +264,14 @@ importers: specifier: 23.0.171 version: 23.0.171(encoding@0.1.13) rollup: - specifier: 4.36.0 - version: 4.36.0 + specifier: 4.37.0 + version: 4.37.0 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@20.17.24)(rollup@4.36.0) + version: 0.6.3(@types/node@20.17.24)(rollup@4.37.0) semver: specifier: 7.7.1 version: 7.7.1 @@ -363,7 +363,7 @@ importers: version: 5.1.8(@types/node@20.17.24) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -401,8 +401,8 @@ importers: specifier: 4.9.2 version: 4.9.2 rollup: - specifier: 4.36.0 - version: 4.36.0 + specifier: 4.37.0 + version: 4.37.0 sass: specifier: 1.86.0 version: 1.86.0 @@ -416,8 +416,8 @@ importers: specifier: 0.2.12 version: 0.2.12 vite: - specifier: 6.2.2 - version: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) + specifier: 6.2.3 + version: 6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -628,7 +628,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1703,20 +1703,20 @@ packages: resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.1.0': - resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==} + '@eslint/config-helpers@0.2.0': + resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.12.0': resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.0': - resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.22.0': - resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==} + '@eslint/js@9.23.0': + resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -2440,98 +2440,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.36.0': - resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} + '@rollup/rollup-android-arm-eabi@4.37.0': + resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.36.0': - resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} + '@rollup/rollup-android-arm64@4.37.0': + resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.36.0': - resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} + '@rollup/rollup-darwin-arm64@4.37.0': + resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.36.0': - resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} + '@rollup/rollup-darwin-x64@4.37.0': + resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.36.0': - resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} + '@rollup/rollup-freebsd-arm64@4.37.0': + resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.36.0': - resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} + '@rollup/rollup-freebsd-x64@4.37.0': + resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.36.0': - resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.36.0': - resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} + '@rollup/rollup-linux-arm-musleabihf@4.37.0': + resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.36.0': - resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} + '@rollup/rollup-linux-arm64-gnu@4.37.0': + resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.36.0': - resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} + '@rollup/rollup-linux-arm64-musl@4.37.0': + resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.36.0': - resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': - resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.36.0': - resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} + '@rollup/rollup-linux-riscv64-gnu@4.37.0': + resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.36.0': - resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} + '@rollup/rollup-linux-riscv64-musl@4.37.0': + resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.37.0': + resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.36.0': - resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} + '@rollup/rollup-linux-x64-gnu@4.37.0': + resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.36.0': - resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} + '@rollup/rollup-linux-x64-musl@4.37.0': + resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.36.0': - resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} + '@rollup/rollup-win32-arm64-msvc@4.37.0': + resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.36.0': - resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} + '@rollup/rollup-win32-ia32-msvc@4.37.0': + resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.36.0': - resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} + '@rollup/rollup-win32-x64-msvc@4.37.0': + resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} cpu: [x64] os: [win32] @@ -4371,8 +4376,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.22.0: - resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==} + eslint@9.23.0: + resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -6781,8 +6786,8 @@ packages: '@types/node': optional: true - rollup@4.36.0: - resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} + rollup@4.37.0: + resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7615,8 +7620,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@6.2.2: - resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} + vite@6.2.3: + resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -8857,16 +8862,16 @@ snapshots: '@esbuild/win32-x64@0.25.1': optional: true - '@eslint-community/eslint-utils@4.5.1(eslint@9.22.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@1.21.7))': dependencies: - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.7(eslint@9.22.0(jiti@1.21.7))': + '@eslint/compat@1.2.7(eslint@9.23.0(jiti@1.21.7))': optionalDependencies: - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) '@eslint/config-array@0.19.2': dependencies: @@ -8876,13 +8881,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.1.0': {} + '@eslint/config-helpers@0.2.0': {} '@eslint/core@0.12.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.0': + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 debug: 4.4.0(supports-color@10.0.0) @@ -8896,7 +8901,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.22.0': {} + '@eslint/js@9.23.0': {} '@eslint/object-schema@2.1.6': {} @@ -9533,13 +9538,13 @@ snapshots: - bare-buffer - supports-color - '@rollup/plugin-alias@5.1.1(rollup@4.36.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.37.0)': optionalDependencies: - rollup: 4.36.0 + rollup: 4.37.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.36.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.37.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.36.0) + '@rollup/pluginutils': 5.1.4(rollup@4.37.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.3(picomatch@4.0.2) @@ -9547,104 +9552,107 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.36.0 + rollup: 4.37.0 - '@rollup/plugin-json@6.1.0(rollup@4.36.0)': + '@rollup/plugin-json@6.1.0(rollup@4.37.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.36.0) + '@rollup/pluginutils': 5.1.4(rollup@4.37.0) optionalDependencies: - rollup: 4.36.0 + rollup: 4.37.0 - '@rollup/plugin-node-resolve@13.3.0(rollup@4.36.0)': + '@rollup/plugin-node-resolve@13.3.0(rollup@4.37.0)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.36.0) + '@rollup/pluginutils': 3.1.0(rollup@4.37.0) '@types/resolve': 1.17.1 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.10 - rollup: 4.36.0 + rollup: 4.37.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.36.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.37.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.36.0) + '@rollup/pluginutils': 5.1.4(rollup@4.37.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.36.0 + rollup: 4.37.0 - '@rollup/pluginutils@3.1.0(rollup@4.36.0)': + '@rollup/pluginutils@3.1.0(rollup@4.37.0)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 4.36.0 + rollup: 4.37.0 - '@rollup/pluginutils@5.1.4(rollup@4.36.0)': + '@rollup/pluginutils@5.1.4(rollup@4.37.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.36.0 + rollup: 4.37.0 + + '@rollup/rollup-android-arm-eabi@4.37.0': + optional: true - '@rollup/rollup-android-arm-eabi@4.36.0': + '@rollup/rollup-android-arm64@4.37.0': optional: true - '@rollup/rollup-android-arm64@4.36.0': + '@rollup/rollup-darwin-arm64@4.37.0': optional: true - '@rollup/rollup-darwin-arm64@4.36.0': + '@rollup/rollup-darwin-x64@4.37.0': optional: true - '@rollup/rollup-darwin-x64@4.36.0': + '@rollup/rollup-freebsd-arm64@4.37.0': optional: true - '@rollup/rollup-freebsd-arm64@4.36.0': + '@rollup/rollup-freebsd-x64@4.37.0': optional: true - '@rollup/rollup-freebsd-x64@4.36.0': + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + '@rollup/rollup-linux-arm-musleabihf@4.37.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.36.0': + '@rollup/rollup-linux-arm64-gnu@4.37.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.36.0': + '@rollup/rollup-linux-arm64-musl@4.37.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.36.0': + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + '@rollup/rollup-linux-riscv64-gnu@4.37.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.36.0': + '@rollup/rollup-linux-riscv64-musl@4.37.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.36.0': + '@rollup/rollup-linux-s390x-gnu@4.37.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.36.0': + '@rollup/rollup-linux-x64-gnu@4.37.0': optional: true - '@rollup/rollup-linux-x64-musl@4.36.0': + '@rollup/rollup-linux-x64-musl@4.37.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.36.0': + '@rollup/rollup-win32-arm64-msvc@4.37.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.36.0': + '@rollup/rollup-win32-ia32-msvc@4.37.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.36.0': + '@rollup/rollup-win32-x64-msvc@4.37.0': optional: true '@rollup/wasm-node@4.36.0': @@ -9689,10 +9697,10 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@4.2.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) - eslint: 9.22.0(jiti@1.21.7) + '@typescript-eslint/utils': 8.26.1(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + eslint: 9.23.0(jiti@1.21.7) eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -10082,15 +10090,15 @@ snapshots: '@types/node': 20.17.24 optional: true - '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) '@typescript-eslint/scope-manager': 8.27.0 - '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/utils': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/type-utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) '@typescript-eslint/visitor-keys': 8.27.0 - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -10099,14 +10107,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 8.27.0 '@typescript-eslint/types': 8.27.0 '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) '@typescript-eslint/visitor-keys': 8.27.0 debug: 4.4.0(supports-color@10.0.0) - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -10121,12 +10129,12 @@ snapshots: '@typescript-eslint/types': 8.27.0 '@typescript-eslint/visitor-keys': 8.27.0 - '@typescript-eslint/type-utils@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/type-utils@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) - '@typescript-eslint/utils': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) debug: 4.4.0(supports-color@10.0.0) - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) ts-api-utils: 2.0.1(typescript@5.8.2) typescript: 5.8.2 transitivePeerDependencies: @@ -10164,24 +10172,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/utils@8.26.1(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.26.1 '@typescript-eslint/types': 8.26.1 '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/utils@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.27.0 '@typescript-eslint/types': 8.27.0 '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -10358,9 +10366,9 @@ snapshots: minimatch: 7.4.6 semver: 7.6.3 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0))': dependencies: - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) '@web/browser-logs@0.4.1': dependencies: @@ -10395,11 +10403,11 @@ snapshots: '@web/dev-server-rollup@0.6.4': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.36.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.37.0) '@web/dev-server-core': 0.7.5 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.36.0 + rollup: 4.37.0 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -11907,9 +11915,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@1.21.7)): + eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@1.21.7)): dependencies: - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node@0.3.9: dependencies: @@ -11919,21 +11927,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0(jiti@1.21.7)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) - eslint: 9.22.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.22.0(jiti@1.21.7)): + eslint-plugin-header@3.1.1(eslint@9.23.0(jiti@1.21.7)): dependencies: - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.22.0(jiti@1.21.7)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11942,9 +11950,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.22.0(jiti@1.21.7) + eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0(jiti@1.21.7)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11956,7 +11964,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.27.0(eslint@9.22.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -11976,15 +11984,15 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.22.0(jiti@1.21.7): + eslint@9.23.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.2 - '@eslint/config-helpers': 0.1.0 + '@eslint/config-helpers': 0.2.0 '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.0 - '@eslint/js': 9.22.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.23.0 '@eslint/plugin-kit': 0.2.7 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -13732,7 +13740,7 @@ snapshots: ng-packagr@20.0.0-next.1(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: '@angular/compiler-cli': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) - '@rollup/plugin-json': 6.1.0(rollup@4.36.0) + '@rollup/plugin-json': 6.1.0(rollup@4.37.0) '@rollup/wasm-node': 4.36.0 ajv: 8.17.1 ansi-colors: 4.1.3 @@ -13755,7 +13763,7 @@ snapshots: tslib: 2.8.1 typescript: 5.8.2 optionalDependencies: - rollup: 4.36.0 + rollup: 4.37.0 nice-try@1.0.5: {} @@ -14662,37 +14670,38 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.24)(rollup@4.36.0): + rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.24)(rollup@4.37.0): dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.36.0) - rollup: 4.36.0 + '@rollup/pluginutils': 3.1.0(rollup@4.37.0) + rollup: 4.37.0 source-map-resolve: 0.6.0 optionalDependencies: '@types/node': 20.17.24 - rollup@4.36.0: + rollup@4.37.0: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.36.0 - '@rollup/rollup-android-arm64': 4.36.0 - '@rollup/rollup-darwin-arm64': 4.36.0 - '@rollup/rollup-darwin-x64': 4.36.0 - '@rollup/rollup-freebsd-arm64': 4.36.0 - '@rollup/rollup-freebsd-x64': 4.36.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 - '@rollup/rollup-linux-arm-musleabihf': 4.36.0 - '@rollup/rollup-linux-arm64-gnu': 4.36.0 - '@rollup/rollup-linux-arm64-musl': 4.36.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 - '@rollup/rollup-linux-riscv64-gnu': 4.36.0 - '@rollup/rollup-linux-s390x-gnu': 4.36.0 - '@rollup/rollup-linux-x64-gnu': 4.36.0 - '@rollup/rollup-linux-x64-musl': 4.36.0 - '@rollup/rollup-win32-arm64-msvc': 4.36.0 - '@rollup/rollup-win32-ia32-msvc': 4.36.0 - '@rollup/rollup-win32-x64-msvc': 4.36.0 + '@rollup/rollup-android-arm-eabi': 4.37.0 + '@rollup/rollup-android-arm64': 4.37.0 + '@rollup/rollup-darwin-arm64': 4.37.0 + '@rollup/rollup-darwin-x64': 4.37.0 + '@rollup/rollup-freebsd-arm64': 4.37.0 + '@rollup/rollup-freebsd-x64': 4.37.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 + '@rollup/rollup-linux-arm-musleabihf': 4.37.0 + '@rollup/rollup-linux-arm64-gnu': 4.37.0 + '@rollup/rollup-linux-arm64-musl': 4.37.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-musl': 4.37.0 + '@rollup/rollup-linux-s390x-gnu': 4.37.0 + '@rollup/rollup-linux-x64-gnu': 4.37.0 + '@rollup/rollup-linux-x64-musl': 4.37.0 + '@rollup/rollup-win32-arm64-msvc': 4.37.0 + '@rollup/rollup-win32-ia32-msvc': 4.37.0 + '@rollup/rollup-win32-x64-msvc': 4.37.0 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -15689,11 +15698,11 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0): + vite@6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0): dependencies: esbuild: 0.25.1 postcss: 8.5.3 - rollup: 4.36.0 + rollup: 4.37.0 optionalDependencies: '@types/node': 20.17.24 fsevents: 2.3.3 From 64732534ecb84d702bde2469466a05e765879f9a Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 24 Mar 2025 13:39:17 +0000 Subject: [PATCH 062/160] fix(@angular/cli): update minimum supported Node.js 22 version to 22.11.0 For more details, see: https://github.com/angular/angular-cli/issues/27674 BREAKING CHANGE: Node.js versions from 22.0 to 22.10 are no longer supported --- WORKSPACE | 16 ++++++++-------- constants.bzl | 2 +- package.json | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index b87377b8f841..fc698dda8a8c 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -90,15 +90,15 @@ nodejs_register_toolchains( name = "node22", # The below can be removed once @rules_nodejs/nodejs is updated to latest which contains https://github.com/bazelbuild/rules_nodejs/pull/3701 node_repositories = { - "22.0.0-darwin_arm64": ("node-v22.0.0-darwin-arm64.tar.gz", "node-v22.0.0-darwin-arm64", "ea96d349cfaa67aa87ceeaa3e5b52c9167f7ac302fd8d1ff162d0785e9dc0785"), - "22.0.0-darwin_amd64": ("node-v22.0.0-darwin-x64.tar.gz", "node-v22.0.0-darwin-x64", "422a3887ff5418f0a4552d89cf99346ab8ab51bb5d384660baa88b8444d2c111"), - "22.0.0-linux_arm64": ("node-v22.0.0-linux-arm64.tar.xz", "node-v22.0.0-linux-arm64", "83711d29cbe46375bdffab5419f3d831892e24294169272f6c39edc364556241"), - "22.0.0-linux_ppc64le": ("node-v22.0.0-linux-ppc64le.tar.xz", "node-v22.0.0-linux-ppc64le", "2b3fb8707a79243bfb3131312b86716ddc3855bce21bb168095b6b916798e5e9"), - "22.0.0-linux_s390x": ("node-v22.0.0-linux-s390x.tar.xz", "node-v22.0.0-linux-s390x", "89a8efeeb9f94ce9ea251b8109e079c14919f4c0dc2cbc9f545ec47ef0886737"), - "22.0.0-linux_amd64": ("node-v22.0.0-linux-x64.tar.xz", "node-v22.0.0-linux-x64", "9122e50f2642afd5f6078cafd1f52ede60fc464284384f05c18a04d13d07ae5a"), - "22.0.0-windows_amd64": ("node-v22.0.0-win-x64.zip", "node-v22.0.0-win-x64", "32d639b47d4c0a651ff8f8d7d41a454168a3d4045be37985f9a810cf8cef6174"), + "22.11.0-darwin_arm64": ("node-v22.11.0-darwin-arm64.tar.gz", "node-v22.11.0-darwin-arm64", "2e89afe6f4e3aa6c7e21c560d8a0453d84807e97850bbb819b998531a22bdfde"), + "22.11.0-darwin_amd64": ("node-v22.11.0-darwin-x64.tar.gz", "node-v22.11.0-darwin-x64", "668d30b9512137b5f5baeef6c1bb4c46efff9a761ba990a034fb6b28b9da2465"), + "22.11.0-linux_arm64": ("node-v22.11.0-linux-arm64.tar.xz", "node-v22.11.0-linux-arm64", "6031d04b98f59ff0f7cb98566f65b115ecd893d3b7870821171708cdbaf7ae6e"), + "22.11.0-linux_ppc64le": ("node-v22.11.0-linux-ppc64le.tar.xz", "node-v22.11.0-linux-ppc64le", "d1d49d7d611b104b6d616e18ac439479d8296aa20e3741432de0e85f4735a81e"), + "22.11.0-linux_s390x": ("node-v22.11.0-linux-s390x.tar.xz", "node-v22.11.0-linux-s390x", "f474ed77d6b13d66d07589aee1c2b9175be4c1b165483e608ac1674643064a99"), + "22.11.0-linux_amd64": ("node-v22.11.0-linux-x64.tar.xz", "node-v22.11.0-linux-x64", "83bf07dd343002a26211cf1fcd46a9d9534219aad42ee02847816940bf610a72"), + "22.11.0-windows_amd64": ("node-v22.11.0-win-x64.zip", "node-v22.11.0-win-x64", "905373a059aecaf7f48c1ce10ffbd5334457ca00f678747f19db5ea7d256c236"), }, - node_version = "22.0.0", + node_version = "22.11.0", ) load("@aspect_rules_js//js:toolchains.bzl", "rules_js_register_toolchains") diff --git a/constants.bzl b/constants.bzl index 0521fb762b44..87028bf0a607 100644 --- a/constants.bzl +++ b/constants.bzl @@ -1,5 +1,5 @@ # Engine versions to stamp in a release package.json -RELEASE_ENGINES_NODE = "^20.11.1 || >=22.0.0" +RELEASE_ENGINES_NODE = "^20.11.1 || >=22.11.0" RELEASE_ENGINES_NPM = "^6.11.0 || ^7.5.6 || >=8.0.0" RELEASE_ENGINES_YARN = ">= 1.13.0" diff --git a/package.json b/package.json index 43121238d5a2..87ffc9e20d63 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ }, "packageManager": "pnpm@9.15.6", "engines": { - "node": "^20.11.1 || >=22.0.0", + "node": "^20.11.1 || >=22.11.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", "pnpm": "^9.15.6" From 3f506f5af9e8f07f44a2b635475549d1818cb7dd Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 24 Mar 2025 13:09:49 +0000 Subject: [PATCH 063/160] build: lock file maintenance --- pnpm-lock.yaml | 562 +++++++++++++++++++++++-------------------------- 1 file changed, 262 insertions(+), 300 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e57c44ba7da..7b52eba9ede7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -124,7 +124,7 @@ importers: version: 4.17.16 '@types/node': specifier: ^20.17.19 - version: 20.17.24 + version: 20.17.27 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -271,7 +271,7 @@ importers: version: 3.0.2 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@20.17.24)(rollup@4.37.0) + version: 0.6.3(@types/node@20.17.27)(rollup@4.37.0) semver: specifier: 7.7.1 version: 7.7.1 @@ -289,7 +289,7 @@ importers: version: 7.4.3 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@20.17.24)(typescript@5.8.2) + version: 10.9.2(@types/node@20.17.27)(typescript@5.8.2) tslib: specifier: 2.8.1 version: 2.8.1 @@ -360,10 +360,10 @@ importers: version: 7.26.0(@babel/core@7.26.10) '@inquirer/confirm': specifier: 5.1.8 - version: 5.1.8(@types/node@20.17.24) + version: 5.1.8(@types/node@20.17.27) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -417,7 +417,7 @@ importers: version: 0.2.12 vite: specifier: 6.2.3 - version: 6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) + version: 6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -458,10 +458,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.4.0 - version: 7.4.0(@types/node@20.17.24) + version: 7.4.0(@types/node@20.17.27) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.24)) + version: 2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.27)) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -628,7 +628,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -839,7 +839,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.4.0 - version: 7.4.0(@types/node@20.17.24) + version: 7.4.0(@types/node@20.17.27) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1047,8 +1047,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.3': - resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + '@babel/helper-define-polyfill-provider@0.6.4': + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -1746,16 +1746,12 @@ packages: resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} - '@google-cloud/promisify@4.1.0': - resolution: {integrity: sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==} - engines: {node: '>=18'} - '@google-cloud/spanner@7.19.1': resolution: {integrity: sha512-a7WlM4T3g5hslSBxQpsCxlH2IGgeVVEnDP5/v51kNlKv/W5PhBMqaHanodkUjbjegsQNlWAkqLClzIwtldfSXg==} engines: {node: '>=14.0.0'} - '@grpc/grpc-js@1.13.0': - resolution: {integrity: sha512-pMuxInZjUnUkgMT2QLZclRqwk2ykJbIU05aZgPgJYXEpN9+2I7z7aNwcjWZSycRPl232FfhPszyBFJyOxTHNog==} + '@grpc/grpc-js@1.13.1': + resolution: {integrity: sha512-z5nNuIs75S73ZULjPDe5QCNTiCv7FyBZXEVWOyAHtcebnuJf0g1SuueI3U1/z/KK39XyAQRUC+C9ZQJOtgHynA==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.13': @@ -2202,11 +2198,11 @@ packages: resolution: {integrity: sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==} engines: {node: '>= 18'} - '@octokit/openapi-types@23.0.1': - resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} + '@octokit/openapi-types@24.2.0': + resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} - '@octokit/plugin-paginate-rest@11.4.3': - resolution: {integrity: sha512-tBXaAbXkqVJlRoA/zQVe9mUdb8rScmivqtpv3ovsC5xhje/a+NOCivs7eUhWBwCApJVsR4G5HMeaLbq7PxqZGA==} + '@octokit/plugin-paginate-rest@11.6.0': + resolution: {integrity: sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' @@ -2217,8 +2213,8 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@13.3.1': - resolution: {integrity: sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ==} + '@octokit/plugin-rest-endpoint-methods@13.5.0': + resolution: {integrity: sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' @@ -2235,8 +2231,8 @@ packages: resolution: {integrity: sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==} engines: {node: '>= 18'} - '@octokit/types@13.8.0': - resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} + '@octokit/types@13.10.0': + resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} @@ -2540,8 +2536,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/wasm-node@4.36.0': - resolution: {integrity: sha512-qEzDrBzGlkWgtWiP8OJJegVdT+gHYEbHXtkI0vhlDLSzejAzMuhl1MfIQyU6U6XCZrijX9KTSi3UNBwB4en/eQ==} + '@rollup/wasm-node@4.37.0': + resolution: {integrity: sha512-Nzbex+bqQ2wffHfAX5nHUMhcAUwedzE02arkETjt/ybjD0ieWtXwRUgIipB7giMRqKLdopDmkSIWow0mxzWmLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2683,6 +2679,9 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} @@ -2770,8 +2769,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@20.17.24': - resolution: {integrity: sha512-d7fGCyB96w9BnWQrOsJtpyiSaBcAYYr75bnK6ZRjDbql2cGLj/3GsL5OYmLPNq76l7Gf2q4Rv9J2o6h5CrD9sA==} + '@types/node@20.17.27': + resolution: {integrity: sha512-U58sbKhDrthHlxHRJw7ZLiLDZGmAUOZUbpw0S6nL27sYUdhvgBLCRu/keSd6qcTsfArd1sRFCCBxzWATGr/0UA==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -2909,10 +2908,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/scope-manager@8.26.1': - resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.27.0': resolution: {integrity: sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2924,33 +2919,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/types@8.26.1': - resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.27.0': resolution: {integrity: sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.26.1': - resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: 5.8.2 - '@typescript-eslint/typescript-estree@8.27.0': resolution: {integrity: sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.8.2 - '@typescript-eslint/utils@8.26.1': - resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: 5.8.2 - '@typescript-eslint/utils@8.27.0': resolution: {integrity: sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2958,10 +2936,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/visitor-keys@8.26.1': - resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.27.0': resolution: {integrity: sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3419,8 +3393,8 @@ packages: '@babel/core': ^7.12.0 webpack: '>=5.61.0' - babel-plugin-polyfill-corejs2@0.4.12: - resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + babel-plugin-polyfill-corejs2@0.4.13: + resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -3429,8 +3403,8 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.3: - resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + babel-plugin-polyfill-regenerator@0.6.4: + resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -3440,12 +3414,17 @@ packages: bare-events@2.5.4: resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - bare-fs@4.0.1: - resolution: {integrity: sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==} - engines: {bare: '>=1.7.0'} + bare-fs@4.0.2: + resolution: {integrity: sha512-S5mmkMesiduMqnz51Bfh0Et9EX0aTCJxhsI4bvzFFLs8Z1AV8RDHadfY5CyLwdoLHgXbNBEN1gQcbEtGwuvixw==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true - bare-os@3.6.0: - resolution: {integrity: sha512-BUrFS5TqSBdA0LwHop4OjPJwisqxGy6JsWVqV6qaFoe965qqtaKfDzHY5T2YA1gUL0ZeeQeA+4BBc1FJTcHiPw==} + bare-os@3.6.1: + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} engines: {bare: '>=1.14.0'} bare-path@3.0.0: @@ -3618,8 +3597,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001705: - resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==} + caniuse-lite@1.0.30001707: + resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -3802,8 +3781,8 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} content-disposition@0.5.4: @@ -4169,8 +4148,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.119: - resolution: {integrity: sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==} + electron-to-chromium@1.5.123: + resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -4850,8 +4829,8 @@ packages: hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + html-entities@2.5.3: + resolution: {integrity: sha512-D3AfvN7SjhTgBSA8L1BN4FpPzuEd06uy4lHwSoRWr0lndi9BKaNzPLKGOWZ2ocSGguozr08TTb2jhCLHaemruw==} html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -5745,8 +5724,8 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} mime-types@2.1.35: @@ -5897,8 +5876,8 @@ packages: nanocolors@0.2.13: resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==} - nanoid@3.3.10: - resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -6898,6 +6877,10 @@ packages: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} + send@0.19.1: + resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} + engines: {node: '>= 0.8.0'} + serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} @@ -7326,11 +7309,11 @@ packages: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} - tldts-core@6.1.84: - resolution: {integrity: sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==} + tldts-core@6.1.85: + resolution: {integrity: sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==} - tldts@6.1.84: - resolution: {integrity: sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==} + tldts@6.1.85: + resolution: {integrity: sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==} hasBin: true tmp@0.0.30: @@ -7378,8 +7361,8 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - ts-api-utils@2.0.1: - resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: typescript: 5.8.2 @@ -8167,7 +8150,7 @@ snapshots: regexpu-core: 6.2.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.10)': + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-compilation-targets': 7.26.5 @@ -8587,9 +8570,9 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.26.5 - babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8712,9 +8695,9 @@ snapshots: '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.10) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) - babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) core-js-compat: 3.41.0 semver: 6.3.1 transitivePeerDependencies: @@ -8915,12 +8898,12 @@ snapshots: '@google-cloud/common@5.0.2(encoding@0.1.13)(supports-color@10.0.0)': dependencies: '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.1.0 + '@google-cloud/promisify': 4.0.0 arrify: 2.0.1 duplexify: 4.1.3 extend: 3.0.2 google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.0.0) - html-entities: 2.5.2 + html-entities: 2.5.3 retry-request: 7.0.2(encoding@0.1.13)(supports-color@10.0.0) teeny-request: 9.0.0(encoding@0.1.13)(supports-color@10.0.0) transitivePeerDependencies: @@ -8933,8 +8916,6 @@ snapshots: '@google-cloud/promisify@4.0.0': {} - '@google-cloud/promisify@4.1.0': {} - '@google-cloud/spanner@7.19.1(encoding@0.1.13)(supports-color@10.0.0)': dependencies: '@google-cloud/common': 5.0.2(encoding@0.1.13)(supports-color@10.0.0) @@ -8972,7 +8953,7 @@ snapshots: - encoding - supports-color - '@grpc/grpc-js@1.13.0': + '@grpc/grpc-js@1.13.1': dependencies: '@grpc/proto-loader': 0.7.13 '@js-sdsl/ordered-map': 4.4.2 @@ -8999,27 +8980,27 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/checkbox@4.1.4(@types/node@20.17.24)': + '@inquirer/checkbox@4.1.4(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/type': 3.0.5(@types/node@20.17.27) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/confirm@5.1.8(@types/node@20.17.24)': + '@inquirer/confirm@5.1.8(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.27) optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/core@10.1.9(@types/node@20.17.24)': + '@inquirer/core@10.1.9(@types/node@20.17.27)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/type': 3.0.5(@types/node@20.17.27) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -9027,97 +9008,97 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/editor@4.2.9(@types/node@20.17.24)': + '@inquirer/editor@4.2.9(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.27) external-editor: 3.1.0 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/expand@4.0.11(@types/node@20.17.24)': + '@inquirer/expand@4.0.11(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.27) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.8(@types/node@20.17.24)': + '@inquirer/input@4.1.8(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.27) optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/number@3.0.11(@types/node@20.17.24)': + '@inquirer/number@3.0.11(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.27) optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/password@4.0.11(@types/node@20.17.24)': + '@inquirer/password@4.0.11(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.27) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 20.17.24 - - '@inquirer/prompts@7.4.0(@types/node@20.17.24)': - dependencies: - '@inquirer/checkbox': 4.1.4(@types/node@20.17.24) - '@inquirer/confirm': 5.1.8(@types/node@20.17.24) - '@inquirer/editor': 4.2.9(@types/node@20.17.24) - '@inquirer/expand': 4.0.11(@types/node@20.17.24) - '@inquirer/input': 4.1.8(@types/node@20.17.24) - '@inquirer/number': 3.0.11(@types/node@20.17.24) - '@inquirer/password': 4.0.11(@types/node@20.17.24) - '@inquirer/rawlist': 4.0.11(@types/node@20.17.24) - '@inquirer/search': 3.0.11(@types/node@20.17.24) - '@inquirer/select': 4.1.0(@types/node@20.17.24) + '@types/node': 20.17.27 + + '@inquirer/prompts@7.4.0(@types/node@20.17.27)': + dependencies: + '@inquirer/checkbox': 4.1.4(@types/node@20.17.27) + '@inquirer/confirm': 5.1.8(@types/node@20.17.27) + '@inquirer/editor': 4.2.9(@types/node@20.17.27) + '@inquirer/expand': 4.0.11(@types/node@20.17.27) + '@inquirer/input': 4.1.8(@types/node@20.17.27) + '@inquirer/number': 3.0.11(@types/node@20.17.27) + '@inquirer/password': 4.0.11(@types/node@20.17.27) + '@inquirer/rawlist': 4.0.11(@types/node@20.17.27) + '@inquirer/search': 3.0.11(@types/node@20.17.27) + '@inquirer/select': 4.1.0(@types/node@20.17.27) optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/rawlist@4.0.11(@types/node@20.17.24)': + '@inquirer/rawlist@4.0.11(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.27) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/search@3.0.11(@types/node@20.17.24)': + '@inquirer/search@3.0.11(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/type': 3.0.5(@types/node@20.17.27) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@inquirer/select@4.1.0(@types/node@20.17.24)': + '@inquirer/select@4.1.0(@types/node@20.17.27)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.24) + '@inquirer/core': 10.1.9(@types/node@20.17.27) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.24) + '@inquirer/type': 3.0.5(@types/node@20.17.27) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@inquirer/type@1.5.5': dependencies: mute-stream: 1.0.0 - '@inquirer/type@3.0.5(@types/node@20.17.24)': + '@inquirer/type@3.0.5(@types/node@20.17.27)': optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@isaacs/cliui@8.0.2': dependencies: @@ -9181,9 +9162,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.24))': + '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.27))': dependencies: - '@inquirer/prompts': 7.4.0(@types/node@20.17.24) + '@inquirer/prompts': 7.4.0(@types/node@20.17.27) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.2.6': @@ -9369,59 +9350,59 @@ snapshots: '@octokit/graphql': 8.2.1 '@octokit/request': 9.2.2 '@octokit/request-error': 6.1.7 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 before-after-hook: 3.0.2 universal-user-agent: 7.0.2 '@octokit/endpoint@10.1.3': dependencies: - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 universal-user-agent: 7.0.2 '@octokit/graphql@8.2.1': dependencies: '@octokit/request': 9.2.2 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 universal-user-agent: 7.0.2 - '@octokit/openapi-types@23.0.1': {} + '@octokit/openapi-types@24.2.0': {} - '@octokit/plugin-paginate-rest@11.4.3(@octokit/core@6.1.4)': + '@octokit/plugin-paginate-rest@11.6.0(@octokit/core@6.1.4)': dependencies: '@octokit/core': 6.1.4 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.4)': dependencies: '@octokit/core': 6.1.4 - '@octokit/plugin-rest-endpoint-methods@13.3.1(@octokit/core@6.1.4)': + '@octokit/plugin-rest-endpoint-methods@13.5.0(@octokit/core@6.1.4)': dependencies: '@octokit/core': 6.1.4 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 '@octokit/request-error@6.1.7': dependencies: - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 '@octokit/request@9.2.2': dependencies: '@octokit/endpoint': 10.1.3 '@octokit/request-error': 6.1.7 - '@octokit/types': 13.8.0 + '@octokit/types': 13.10.0 fast-content-type-parse: 2.0.1 universal-user-agent: 7.0.2 '@octokit/rest@21.1.1': dependencies: '@octokit/core': 6.1.4 - '@octokit/plugin-paginate-rest': 11.4.3(@octokit/core@6.1.4) + '@octokit/plugin-paginate-rest': 11.6.0(@octokit/core@6.1.4) '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.4) - '@octokit/plugin-rest-endpoint-methods': 13.3.1(@octokit/core@6.1.4) + '@octokit/plugin-rest-endpoint-methods': 13.5.0(@octokit/core@6.1.4) - '@octokit/types@13.8.0': + '@octokit/types@13.10.0': dependencies: - '@octokit/openapi-types': 23.0.1 + '@octokit/openapi-types': 24.2.0 '@opentelemetry/api@1.9.0': {} @@ -9589,7 +9570,7 @@ snapshots: '@rollup/pluginutils@5.1.4(rollup@4.37.0)': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: @@ -9655,7 +9636,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.37.0': optional: true - '@rollup/wasm-node@4.36.0': + '@rollup/wasm-node@4.37.0': dependencies: '@types/estree': 1.0.6 optionalDependencies: @@ -9699,7 +9680,7 @@ snapshots: '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@typescript-eslint/utils': 8.26.1(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) eslint: 9.23.0(jiti@1.21.7) eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -9730,7 +9711,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/babel__code-frame@7.0.6': {} @@ -9760,16 +9741,16 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/browser-sync@2.29.0': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/serve-static': 1.15.7 chokidar: 3.6.0 @@ -9777,7 +9758,7 @@ snapshots: '@types/co-body@6.1.3': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/qs': 6.9.18 '@types/command-line-args@5.2.3': {} @@ -9785,11 +9766,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.6 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/connect@3.4.38': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/content-disposition@0.5.8': {} @@ -9800,42 +9781,44 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/cors@2.8.17': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/debounce@1.2.4': {} '@types/duplexify@3.6.4': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 '@types/estree@0.0.39': {} '@types/estree@1.0.6': {} + '@types/estree@1.0.7': {} + '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -9850,11 +9833,11 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/http-assert@1.5.6': {} @@ -9862,7 +9845,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/ini@4.1.1': {} @@ -9888,7 +9871,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -9908,13 +9891,13 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/less@3.0.8': {} '@types/loader-utils@2.0.6': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/webpack': 4.41.40 '@types/lodash@4.17.16': {} @@ -9931,14 +9914,14 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 form-data: 4.0.2 '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 - '@types/node@20.17.24': + '@types/node@20.17.27': dependencies: undici-types: 6.19.8 @@ -9946,7 +9929,7 @@ snapshots: '@types/npm-registry-fetch@8.0.7': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/node-fetch': 2.6.12 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -9954,11 +9937,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/pacote@11.1.8': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/npm-registry-fetch': 8.0.7 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -9971,12 +9954,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/pumpify@1.4.4': dependencies: '@types/duplexify': 3.6.4 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/q@0.0.32': {} @@ -9987,13 +9970,13 @@ snapshots: '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/tough-cookie': 4.0.5 form-data: 2.5.3 '@types/resolve@1.17.1': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/resolve@1.20.2': {} @@ -10008,7 +9991,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/serve-index@1.9.4': dependencies: @@ -10017,23 +10000,23 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/send': 0.17.4 '@types/shelljs@0.8.15': dependencies: '@types/glob': 7.2.0 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/source-list-map@0.1.6': {} '@types/ssri@7.1.5': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/stack-trace@0.0.33': {} @@ -10052,17 +10035,17 @@ snapshots: '@types/watchpack@2.4.4': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/webpack-sources@3.2.3': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/source-list-map': 0.1.6 source-map: 0.7.4 '@types/webpack@4.41.40': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -10071,11 +10054,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/ws@8.18.0': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 '@types/yargs-parser@21.0.3': {} @@ -10087,7 +10070,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 optional: true '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': @@ -10102,7 +10085,7 @@ snapshots: graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.8.2) + ts-api-utils: 2.1.0(typescript@5.8.2) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -10119,11 +10102,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.26.1': - dependencies: - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/visitor-keys': 8.26.1 - '@typescript-eslint/scope-manager@8.27.0': dependencies: '@typescript-eslint/types': 8.27.0 @@ -10135,29 +10113,13 @@ snapshots: '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) debug: 4.4.0(supports-color@10.0.0) eslint: 9.23.0(jiti@1.21.7) - ts-api-utils: 2.0.1(typescript@5.8.2) + ts-api-utils: 2.1.0(typescript@5.8.2) typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.26.1': {} - '@typescript-eslint/types@8.27.0': {} - '@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2)': - dependencies: - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/visitor-keys': 8.26.1 - debug: 4.4.0(supports-color@10.0.0) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.8.2) - typescript: 5.8.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.27.0(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 8.27.0 @@ -10167,18 +10129,7 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.8.2) - typescript: 5.8.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.26.1(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': - dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.26.1 - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - eslint: 9.23.0(jiti@1.21.7) + ts-api-utils: 2.1.0(typescript@5.8.2) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -10194,11 +10145,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.26.1': - dependencies: - '@typescript-eslint/types': 8.26.1 - eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.27.0': dependencies: '@typescript-eslint/types': 8.27.0 @@ -10366,9 +10312,9 @@ snapshots: minimatch: 7.4.6 semver: 7.6.3 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0))': dependencies: - vite: 6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) '@web/browser-logs@0.4.1': dependencies: @@ -10486,7 +10432,7 @@ snapshots: istanbul-reports: 3.1.7 log-update: 4.0.0 nanocolors: 0.2.13 - nanoid: 3.3.10 + nanoid: 3.3.11 open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 @@ -10835,7 +10781,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001705 + caniuse-lite: 1.0.30001707 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -10858,11 +10804,11 @@ snapshots: find-up: 5.0.0 webpack: 5.98.0(esbuild@0.25.1) - babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.10): + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): dependencies: '@babel/compat-data': 7.26.8 '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10870,15 +10816,15 @@ snapshots: babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): dependencies: '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) core-js-compat: 3.41.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.10): + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.26.10): dependencies: '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) transitivePeerDependencies: - supports-color @@ -10887,21 +10833,19 @@ snapshots: bare-events@2.5.4: optional: true - bare-fs@4.0.1: + bare-fs@4.0.2: dependencies: bare-events: 2.5.4 bare-path: 3.0.0 bare-stream: 2.6.5(bare-events@2.5.4) - transitivePeerDependencies: - - bare-buffer optional: true - bare-os@3.6.0: + bare-os@3.6.1: optional: true bare-path@3.0.0: dependencies: - bare-os: 3.6.0 + bare-os: 3.6.1 optional: true bare-stream@2.6.5(bare-events@2.5.4): @@ -11038,7 +10982,7 @@ snapshots: raw-body: 2.5.2 resp-modifier: 6.0.2 rx: 4.1.0 - send: 0.19.0 + send: 0.19.1 serve-index: 1.9.1 serve-static: 1.16.2 server-destroy: 1.0.1 @@ -11057,8 +11001,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001705 - electron-to-chromium: 1.5.119 + caniuse-lite: 1.0.30001707 + electron-to-chromium: 1.5.123 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -11137,7 +11081,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001705: {} + caniuse-lite@1.0.30001707: {} caseless@0.12.0: {} @@ -11194,7 +11138,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -11306,7 +11250,7 @@ snapshots: compressible@2.0.18: dependencies: - mime-db: 1.53.0 + mime-db: 1.54.0 compression@1.7.5: dependencies: @@ -11356,7 +11300,7 @@ snapshots: transitivePeerDependencies: - supports-color - consola@3.4.0: {} + consola@3.4.2: {} content-disposition@0.5.4: dependencies: @@ -11696,7 +11640,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.119: {} + electron-to-chromium@1.5.123: {} emoji-regex@10.4.0: {} @@ -11736,7 +11680,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 20.17.24 + '@types/node': 20.17.27 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -11997,7 +11941,7 @@ snapshots: '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 @@ -12138,7 +12082,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.0(supports-color@10.0.0) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -12497,7 +12441,7 @@ snapshots: google-gax@4.4.1(encoding@0.1.13)(supports-color@10.0.0): dependencies: - '@grpc/grpc-js': 1.13.0 + '@grpc/grpc-js': 1.13.1 '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 @@ -12523,7 +12467,7 @@ snapshots: grpc-gcp@1.0.1(protobufjs@7.4.0): dependencies: - '@grpc/grpc-js': 1.13.0 + '@grpc/grpc-js': 1.13.1 protobufjs: 7.4.0 gtoken@7.1.0(encoding@0.1.13)(supports-color@10.0.0): @@ -12598,7 +12542,7 @@ snapshots: readable-stream: 2.3.8 wbuf: 1.7.3 - html-entities@2.5.2: {} + html-entities@2.5.3: {} html-escaper@2.0.2: {} @@ -12945,7 +12889,7 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 is-regex@1.2.1: dependencies: @@ -13105,7 +13049,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13587,7 +13531,7 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.53.0: {} + mime-db@1.54.0: {} mime-types@2.1.35: dependencies: @@ -13717,7 +13661,7 @@ snapshots: nanocolors@0.2.13: {} - nanoid@3.3.10: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -13741,7 +13685,7 @@ snapshots: dependencies: '@angular/compiler-cli': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) '@rollup/plugin-json': 6.1.0(rollup@4.37.0) - '@rollup/wasm-node': 4.36.0 + '@rollup/wasm-node': 4.37.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.4 @@ -14262,7 +14206,7 @@ snapshots: postcss@8.5.3: dependencies: - nanoid: 3.3.10 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -14303,7 +14247,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.17.24 + '@types/node': 20.17.27 long: 5.3.1 protractor@7.0.0: @@ -14670,13 +14614,13 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.24)(rollup@4.37.0): + rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.27)(rollup@4.37.0): dependencies: '@rollup/pluginutils': 3.1.0(rollup@4.37.0) rollup: 4.37.0 source-map-resolve: 0.6.0 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 rollup@4.37.0: dependencies: @@ -14813,6 +14757,24 @@ snapshots: transitivePeerDependencies: - supports-color + send@0.19.1: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 @@ -15266,7 +15228,7 @@ snapshots: pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.0.1 + bare-fs: 4.0.2 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -15364,11 +15326,11 @@ snapshots: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 - tldts-core@6.1.84: {} + tldts-core@6.1.85: {} - tldts@6.1.84: + tldts@6.1.85: dependencies: - tldts-core: 6.1.84 + tldts-core: 6.1.85 tmp@0.0.30: dependencies: @@ -15393,7 +15355,7 @@ snapshots: tough-cookie@5.1.2: dependencies: - tldts: 6.1.84 + tldts: 6.1.85 tr46@0.0.3: {} @@ -15407,18 +15369,18 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.0.1(typescript@5.8.2): + ts-api-utils@2.1.0(typescript@5.8.2): dependencies: typescript: 5.8.2 - ts-node@10.9.2(@types/node@20.17.24)(typescript@5.8.2): + ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.24 + '@types/node': 20.17.27 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15537,7 +15499,7 @@ snapshots: unenv@1.10.0: dependencies: - consola: 3.4.0 + consola: 3.4.2 defu: 6.1.4 mime: 3.0.0 node-fetch-native: 1.6.6 @@ -15698,13 +15660,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.3(@types/node@20.17.24)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0): + vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0): dependencies: esbuild: 0.25.1 postcss: 8.5.3 rollup: 4.37.0 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.27 fsevents: 2.3.3 jiti: 1.21.7 less: 4.2.2 @@ -15819,7 +15781,7 @@ snapshots: webpack@5.98.0(esbuild@0.25.1): dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 From bd917d92a653b1a5ece7ab96adfde8f8d282c34a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 24 Mar 2025 22:17:14 -0400 Subject: [PATCH 064/160] fix(@angular/build): normalize karma asset paths before lookup When handling a request for a configured asset with the application- based karma unit testing, the asset URL is now normalized to the executing platform's path format before looking up the asset. This is required due to the build file paths being based on the underlying operating system's paths which may not align with a URL's path separator such as when using Windows. --- .../build/src/builders/karma/application_builder.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/karma/application_builder.ts b/packages/angular/build/src/builders/karma/application_builder.ts index 7651ecaaff5d..eb724ba00700 100644 --- a/packages/angular/build/src/builders/karma/application_builder.ts +++ b/packages/angular/build/src/builders/karma/application_builder.ts @@ -25,6 +25,7 @@ import { findTests, getTestEntrypoints } from './find-tests'; import { Schema as KarmaBuilderOptions } from './schema'; const localResolve = createRequire(__filename).resolve; +const isWindows = process.platform === 'win32'; interface BuildOptions extends ApplicationBuilderInternalOptions { // We know that it's always a string since we set it. @@ -69,7 +70,14 @@ class AngularAssetsMiddleware { let err = null; try { const url = new URL(`http://${req.headers['host']}${req.url}`); - const file = this.latestBuildFiles.files[url.pathname.slice(1)]; + // Remove the leading slash from the URL path and convert to platform specific. + // The latest build files will use the platform path separator. + let pathname = url.pathname.slice(1); + if (isWindows) { + pathname = pathname.replaceAll(path.posix.sep, path.win32.sep); + } + + const file = this.latestBuildFiles.files[pathname]; if (file?.origin === 'disk') { this.serveFile(file.inputPath, undefined, res); From 922f176f28918461f051145af03f384111445298 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 25 Mar 2025 06:04:19 +0000 Subject: [PATCH 065/160] build: update all non-major dependencies --- .github/workflows/codeql.yml | 4 +- WORKSPACE | 6 +- package.json | 6 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 448 ++++++++++-------- 5 files changed, 257 insertions(+), 211 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 5a9abb79df6c..bffbbdd6a4d9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,12 +23,12 @@ jobs: with: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 + uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 + uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: category: '/language:javascript-typescript' diff --git a/WORKSPACE b/WORKSPACE index fc698dda8a8c..685ca2ffbef4 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -31,9 +31,9 @@ build_bazel_rules_nodejs_dependencies() http_archive( name = "aspect_rules_js", - sha256 = "7ee67690ed4d6b5c8cbf6d47bb68b639192a29397a9fe3d513981fecc25a5653", - strip_prefix = "rules_js-2.3.2", - url = "https://github.com/aspect-build/rules_js/releases/download/v2.3.2/rules_js-v2.3.2.tar.gz", + sha256 = "05576ae674015b112b7c40c165735386eb9917affe8013e310d5602a093f2382", + strip_prefix = "rules_js-2.3.3", + url = "https://github.com/aspect-build/rules_js/releases/download/v2.3.3/rules_js-v2.3.3.tar.gz", ) load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") diff --git a/package.json b/package.json index 87ffc9e20d63..6cdeac8f31b4 100644 --- a/package.json +++ b/package.json @@ -94,8 +94,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.27.0", - "@typescript-eslint/parser": "8.27.0", + "@typescript-eslint/eslint-plugin": "8.28.0", + "@typescript-eslint/parser": "8.28.0", "ajv": "8.17.1", "ansi-colors": "4.1.3", "beasties": "0.2.0", @@ -142,7 +142,7 @@ "typescript": "5.8.2", "undici": "7.5.0", "unenv": "^1.10.0", - "verdaccio": "6.0.5", + "verdaccio": "6.1.0", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "21.1.1", "zone.js": "^0.15.0" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 9bdb8271606b..e4f034dc771a 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -12,14 +12,14 @@ "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular/build": "workspace:0.0.0-PLACEHOLDER", "@babel/core": "7.26.10", - "@babel/generator": "7.26.10", + "@babel/generator": "7.27.0", "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", "@babel/plugin-transform-async-generator-functions": "7.26.8", "@babel/plugin-transform-async-to-generator": "7.25.9", "@babel/plugin-transform-runtime": "7.26.10", "@babel/preset-env": "7.26.9", - "@babel/runtime": "7.26.10", + "@babel/runtime": "7.27.0", "@discoveryjs/json-ext": "0.6.3", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", "@vitejs/plugin-basic-ssl": "2.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7b52eba9ede7..60050e4a97bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,11 +159,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.27.0 - version: 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + specifier: 8.28.0 + version: 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) '@typescript-eslint/parser': - specifier: 8.27.0 - version: 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + specifier: 8.28.0 + version: 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) ajv: specifier: 8.17.1 version: 8.17.1 @@ -193,7 +193,7 @@ importers: version: 3.1.1(eslint@9.23.0(jiti@1.21.7)) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)) + version: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)) express: specifier: 4.21.2 version: 4.21.2 @@ -303,8 +303,8 @@ importers: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.0.5 - version: 6.0.5(encoding@0.1.13) + specifier: 6.1.0 + version: 6.1.0(encoding@0.1.13) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.2.2 @@ -597,8 +597,8 @@ importers: specifier: 7.26.10 version: 7.26.10 '@babel/generator': - specifier: 7.26.10 - version: 7.26.10 + specifier: 7.27.0 + version: 7.27.0 '@babel/helper-annotate-as-pure': specifier: 7.25.9 version: 7.25.9 @@ -618,8 +618,8 @@ importers: specifier: 7.26.9 version: 7.26.9(@babel/core@7.26.10) '@babel/runtime': - specifier: 7.26.10 - version: 7.26.10 + specifier: 7.27.0 + version: 7.27.0 '@discoveryjs/json-ext': specifier: 0.6.3 version: 0.6.3 @@ -1027,6 +1027,10 @@ packages: resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} engines: {node: '>=6.9.0'} + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.9': resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} @@ -1119,6 +1123,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} @@ -1490,8 +1499,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/runtime@7.26.10': - resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} engines: {node: '>=6.9.0'} '@babel/template@7.26.9': @@ -1506,6 +1515,10 @@ packages: resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} engines: {node: '>=6.9.0'} + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + '@bazel/bazelisk@1.25.0': resolution: {integrity: sha512-IgesSUh9EwwLI9+Vs5rb/sx7vh6cI97CRLPqw9+/egFzeZlB5S2fTsKwbdDxtTVPjQMGS3GY64tTNsgejVFeKg==} hasBin: true @@ -1522,8 +1535,8 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@cypress/request@3.0.7': - resolution: {integrity: sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==} + '@cypress/request@3.0.8': + resolution: {integrity: sha512-h0NFgh1mJmm1nr4jCwkGHwKneVYKghUyWe6TMNrk0B9zsjAJxpg8C4/+BAcmLgCPa1vj1V8rNUaILl+zYRUWBQ==} engines: {node: '>= 6'} '@discoveryjs/json-ext@0.6.3': @@ -2893,16 +2906,16 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.27.0': - resolution: {integrity: sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==} + '@typescript-eslint/eslint-plugin@8.28.0': + resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/parser@8.27.0': - resolution: {integrity: sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==} + '@typescript-eslint/parser@8.28.0': + resolution: {integrity: sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2912,8 +2925,12 @@ packages: resolution: {integrity: sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.27.0': - resolution: {integrity: sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==} + '@typescript-eslint/scope-manager@8.28.0': + resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.28.0': + resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2923,12 +2940,22 @@ packages: resolution: {integrity: sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.28.0': + resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.27.0': resolution: {integrity: sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.8.2 + '@typescript-eslint/typescript-estree@8.28.0': + resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: 5.8.2 + '@typescript-eslint/utils@8.27.0': resolution: {integrity: sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2936,92 +2963,95 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 + '@typescript-eslint/utils@8.28.0': + resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: 5.8.2 + '@typescript-eslint/visitor-keys@8.27.0': resolution: {integrity: sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@verdaccio/auth@8.0.0-next-8.7': - resolution: {integrity: sha512-CSLBAsCJT1oOpJ4OWnVGmN6o/ZilDNa7Aa5+AU1LI2lbRblqgr4BVRn07GFqimJ//6+tPzl8BHgyiCbBhh1ZiA==} + '@typescript-eslint/visitor-keys@8.28.0': + resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@verdaccio/auth@8.0.0-next-8.13': + resolution: {integrity: sha512-ur6wFC9kspp1JfuQAGOo0p508UbEp9tc92tNcUpZR80MX0Be4ba8IjtGCzVj1kpybxTayAoSAzx4+g5ltlDimQ==} engines: {node: '>=18'} '@verdaccio/commons-api@10.2.0': resolution: {integrity: sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==} engines: {node: '>=8'} - '@verdaccio/config@8.0.0-next-8.7': - resolution: {integrity: sha512-pA0WCWvvWY6vPRav+X0EuFmuK6M08zIpRzTKkqSriCWk6JUCZ07TDnN054AS8TSSOy6EaWgHxnUw3nTd34Z4Sg==} + '@verdaccio/config@8.0.0-next-8.13': + resolution: {integrity: sha512-/vH79u0AEQyvTlpBUqxW8bPSL19Samv8I3Vq5ZL07QsW2uSt6faOSDAY2ag/a1zsyuvD55u/QvrSNW6El9Xr5w==} engines: {node: '>=18'} - '@verdaccio/core@8.0.0-next-8.1': - resolution: {integrity: sha512-kQRCB2wgXEh8H88G51eQgAFK9IxmnBtkQ8sY5FbmB6PbBkyHrbGcCp+2mtRqqo36j0W1VAlfM3XzoknMy6qQnw==} - engines: {node: '>=14'} - - '@verdaccio/core@8.0.0-next-8.7': - resolution: {integrity: sha512-pf8M2Z5EI/5Zdhdcm3aadb9Q9jiDsIredPD3+cIoDum8x3di2AIYvQD7i5BEramfzZlLXVICmFAulU7nUY11qg==} + '@verdaccio/core@8.0.0-next-8.13': + resolution: {integrity: sha512-PIcaPvRVjFN4lxBE/uYIk+qAE7uauoI8+Zj2zv7unrAo38PRo395NRmiG3PAO2L9g7x1YzdgVO+yoN8t37BTKw==} engines: {node: '>=18'} '@verdaccio/file-locking@10.3.1': resolution: {integrity: sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==} engines: {node: '>=12'} - '@verdaccio/file-locking@13.0.0-next-8.2': - resolution: {integrity: sha512-TcHgN3I/N28WBSvtukpGrJhBljl4jyIXq0vEv94vXAG6nUE3saK+vtgo8PfYA3Ueo88v/1zyAbiZM4uxwojCmQ==} + '@verdaccio/file-locking@13.0.0-next-8.3': + resolution: {integrity: sha512-Sugx6XYp8nEJ9SmBoEOExEIQQ0T0q8fcyc/afWdiSNDGWviqqSx2IriCvtMwKZrE4XG0BQo6bXO+A8AOOoo7KQ==} engines: {node: '>=18'} - '@verdaccio/loaders@8.0.0-next-8.4': - resolution: {integrity: sha512-Powlqb4SuMbe6RVgxyyOXaCjuHCcK7oZA+lygaKZDpV9NSHJtbkkV4L+rXyCfTX3b0tKsBh7FzaIdgWc1rDeGQ==} + '@verdaccio/loaders@8.0.0-next-8.5': + resolution: {integrity: sha512-EjRl/ZPBIg/oO+fNLPMNMHy+3syaf0zG0RIaw46y48tHpi3+AnPU/0ePKevMFH63itQQeg6OW0wuJ9gvSc4psw==} engines: {node: '>=18'} '@verdaccio/local-storage-legacy@11.0.2': resolution: {integrity: sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==} engines: {node: '>=12'} - '@verdaccio/logger-commons@8.0.0-next-8.7': - resolution: {integrity: sha512-sXNx57G1LVp81xF4qHer3AOcMEZ90W4FjxtYF0vmULcVg3ybdtStKAT/9ocZtVMvLWTPAauhqylfnXoRZYf32A==} + '@verdaccio/logger-commons@8.0.0-next-8.13': + resolution: {integrity: sha512-t9whigWbSDC/u3qEOLokXbjgwoFDTSlZqH2QUF9SRaXjJCwAwiPj+F9VjevXzlQKwcA7an0tocbKImBlJ+h2kw==} engines: {node: '>=18'} - '@verdaccio/logger-prettify@8.0.0-next-8.1': - resolution: {integrity: sha512-vLhaGq0q7wtMCcqa0aQY6QOsMNarhTu/l4e6Z8mG/5LUH95GGLsBwpXLnKS94P3deIjsHhc9ycnEmG39txbQ1w==} + '@verdaccio/logger-prettify@8.0.0-next-8.2': + resolution: {integrity: sha512-WMXnZPLw5W7GSIQE8UOTp6kRIwiTmnnoJbMmyMlGiNrsRaFKTqk09R5tKUgOyGgd4Lu6yncLbmdm5UjAuwHf1Q==} engines: {node: '>=18'} - '@verdaccio/logger@8.0.0-next-8.7': - resolution: {integrity: sha512-5EMPdZhz2V08BP2rjhtN/Fz5KxCfPJBkYDitbk/eo+FCZ9nVdMCQE3WRbHEaXyJQcIso/LJ6RnL/zKN20E/rPg==} + '@verdaccio/logger@8.0.0-next-8.13': + resolution: {integrity: sha512-pCcJBBJgXE7OfO3Aqkj7vpmYXNyi8u6WVCeTtH4vJxEJ2tqJcu3vkw54L0MRI5xxlSNPZVaoTxPmALquBdiFvw==} engines: {node: '>=18'} - '@verdaccio/middleware@8.0.0-next-8.7': - resolution: {integrity: sha512-Zad7KcdOsI1DUBt1TjQb08rIi/IFFaJKdPhj7M6oy5BX9l/4OM0TtbBueHFNS1+aU+t5eo8ue7ZHbqmjDY/6VQ==} + '@verdaccio/middleware@8.0.0-next-8.13': + resolution: {integrity: sha512-53gn66xkbM3C5UAUYMj+XmBJn5eeTH3YnjFjdcQlFcNqCeXqlpR+lBnEYgDxuJY5S7QQ19+sz2OavqMnNXhL4w==} engines: {node: '>=18'} - '@verdaccio/search-indexer@8.0.0-next-8.2': - resolution: {integrity: sha512-sWliVN5BkAGbZ3e/GD0CsZMfPJdRMRuN0tEKQFsvEJifxToq5UkfCw6vKaVvhezsTWqb+Rp5y+2d4n5BDOA49w==} + '@verdaccio/search-indexer@8.0.0-next-8.3': + resolution: {integrity: sha512-D6ZEdhfiJYiPrKv6ejIwJo8WHu90anWYxu0RdTeEz+sjn6BY/P34y0heeEMyiU3Mq1skgNk3bEl3lzX2KZWetQ==} engines: {node: '>=18'} - '@verdaccio/signature@8.0.0-next-8.1': - resolution: {integrity: sha512-lHD/Z2FoPQTtDYz6ZlXhj/lrg0SFirHrwCGt/cibl1GlePpx78WPdo03tgAyl0Qf+I35n484/gR1l9eixBQqYw==} + '@verdaccio/signature@8.0.0-next-8.5': + resolution: {integrity: sha512-M2OLA2FeSPrg17lYOtUYyUUpOj/1Dl56v/mdanGPjAaZoObhREwHei290DiIie9YW/8NPlvI8SQXLM4dD8X0KA==} engines: {node: '>=18'} '@verdaccio/streams@10.2.1': resolution: {integrity: sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==} engines: {node: '>=12', npm: '>=5'} - '@verdaccio/tarball@13.0.0-next-8.7': - resolution: {integrity: sha512-EWRuEOLgb3UETxUsYg6+Mml6DDRiwQqKIEsE4Ys6y6rcH2vgW6XMnTt+s/v5pFI+zlbi6fxjOgQB1e6IJAwxVA==} + '@verdaccio/tarball@13.0.0-next-8.13': + resolution: {integrity: sha512-ylbautZQIYmMh9TMhb4/GvR76k7VlRg4LcDFCbWZt7jjOMeYHQaNQGcBFTf96wSqOg0XbURRSWG1skI1DXh+tg==} engines: {node: '>=18'} - '@verdaccio/ui-theme@8.0.0-next-8.7': - resolution: {integrity: sha512-+7f7XqqIU+TVCHjsP6lWzCdsD4sM7MEhn4cu3mLW1kJZ7eenWKEltoqixQnoXJzaBjCiz+yXW1WkjMyEFLNbpg==} + '@verdaccio/ui-theme@8.0.0-next-8.13': + resolution: {integrity: sha512-eMWN3i+8AQRTUG7ATI5YQ6wirs7LNjdoYbXLaDSLHn/EmVSgJb2Fv0XWWh0dapJu/TNHcZ6/IrRXUNcScc1qqA==} - '@verdaccio/url@13.0.0-next-8.7': - resolution: {integrity: sha512-biFvwH3zIXYicA+SXNGvjMAe8oIQ5VddsfbO0ZXWlFs0lIz8cgI7QYPeSiCkU2VKpGzZ8pEKgqkxFsfFkU5kGA==} + '@verdaccio/url@13.0.0-next-8.13': + resolution: {integrity: sha512-k4TVAn/JKOSKFdksywaNtJRali4Gt5BFjFb+aTU/N01zvBvehXgkZvQrZuPgrVcvxQL9V71G5TymaDSQRVjalA==} engines: {node: '>=18'} - '@verdaccio/utils@7.0.1-next-8.1': - resolution: {integrity: sha512-cyJdRrVa+8CS7UuIQb3K3IJFjMe64v38tYiBnohSmhRbX7dX9IT3jWbjrwkqWh4KeS1CS6BYENrGG1evJ2ggrQ==} - engines: {node: '>=12'} - - '@verdaccio/utils@8.1.0-next-8.7': - resolution: {integrity: sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==} - engines: {node: '>=12'} + '@verdaccio/utils@8.1.0-next-8.13': + resolution: {integrity: sha512-Q2DalkWPBl6vIftr1dq0V/K3GpeEUo2WEGEPJP0gAN1YdV4zyKFMUJV5EYQNz2ToBFpOZP9HWNDtXOwUagYiqA==} + engines: {node: '>=18'} '@vitejs/plugin-basic-ssl@2.0.0': resolution: {integrity: sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==} @@ -3754,10 +3784,6 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.7.5: - resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} - engines: {node: '>= 0.8.0'} - compression@1.8.0: resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} engines: {node: '>= 0.8.0'} @@ -3826,8 +3852,8 @@ packages: core-js-compat@3.41.0: resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} - core-js@3.37.1: - resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + core-js@3.40.0: + resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -6377,8 +6403,8 @@ packages: pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@9.5.0: - resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} + pino@9.6.0: + resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} hasBin: true piscina@4.9.2: @@ -6569,10 +6595,6 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - qs@6.13.1: - resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} - engines: {node: '>=0.6'} - qs@6.14.0: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} @@ -7582,20 +7604,20 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.7: - resolution: {integrity: sha512-kd6YdrDztkP1/GDZT7Ue2u41iGPvM9y+5aaUbIBUPvTY/YVv57K6MaCMfn9C/I+ZL4R7XOTSxTtWvz3JK4QrNg==} + verdaccio-audit@13.0.0-next-8.13: + resolution: {integrity: sha512-hHyMYdeuk1HArwj8OWWHzCjc89Tizv894obmhbTo7Sd0pbV2sWd2eszT3NkjgTqUJTxe1lb9nyjTAKJEdmQ9DA==} engines: {node: '>=18'} verdaccio-auth-memory@10.2.2: resolution: {integrity: sha512-JCAnSqwq2l1UPt0hQcPn1B3X9mYpJ5zMsDvuDdmnlWLkrIDx2Wev5fluW0HC9hcFMITFl/DJj/DyzYOOqwhFSQ==} engines: {node: '>=8'} - verdaccio-htpasswd@13.0.0-next-8.7: - resolution: {integrity: sha512-znyFnwt59mLKTAu6eHJrfWP07iaHUlYiQN7QoBo8KMAOT1AecUYreBqs93oKHdIOzjTI8j6tQLg57DpeVS5vgg==} + verdaccio-htpasswd@13.0.0-next-8.13: + resolution: {integrity: sha512-Ed8PjzSWvuQc9/026uVIqHrauorcD5o9N0JtSj1T7yHX5SmdSYl91nKA+281bCWL/q2GEnrQ7+aovgBOrzdD1g==} engines: {node: '>=18'} - verdaccio@6.0.5: - resolution: {integrity: sha512-hv+v4mtG/rcNidGUHXAtNuVySiPE3/PM+7dYye5jCDrhCUmRJYOtnvDe/Ym1ZE/twti39g6izVRxEkjnSp52gA==} + verdaccio@6.1.0: + resolution: {integrity: sha512-AO5J3nw8xH6qFr1tvC3T9/dExI1R6+dMaEZFCG+r78oEFiA38dwxX/q9VDyNLHgzM95HStQpoRYfQ7d42295eg==} engines: {node: '>=18'} hasBin: true @@ -8118,6 +8140,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 + '@babel/generator@7.27.0': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.25.9': dependencies: '@babel/types': 7.26.10 @@ -8242,6 +8272,10 @@ snapshots: dependencies: '@babel/types': 7.26.10 + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -8710,7 +8744,7 @@ snapshots: '@babel/types': 7.26.10 esutils: 2.0.3 - '@babel/runtime@7.26.10': + '@babel/runtime@7.27.0': dependencies: regenerator-runtime: 0.14.1 @@ -8723,7 +8757,7 @@ snapshots: '@babel/traverse@7.26.10': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 + '@babel/generator': 7.27.0 '@babel/parser': 7.26.10 '@babel/template': 7.26.9 '@babel/types': 7.26.10 @@ -8737,6 +8771,11 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@bazel/bazelisk@1.25.0': {} '@bazel/buildifier@8.0.3': {} @@ -8747,7 +8786,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@cypress/request@3.0.7': + '@cypress/request@3.0.8': dependencies: aws-sign2: 0.7.0 aws4: 1.13.2 @@ -8762,7 +8801,7 @@ snapshots: json-stringify-safe: 5.0.1 mime-types: 2.1.35 performance-now: 2.1.0 - qs: 6.13.1 + qs: 6.14.0 safe-buffer: 5.2.1 tough-cookie: 5.1.2 tunnel-agent: 0.6.0 @@ -10073,14 +10112,14 @@ snapshots: '@types/node': 20.17.27 optional: true - '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/scope-manager': 8.27.0 - '@typescript-eslint/type-utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.27.0 + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.28.0 eslint: 9.23.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 @@ -10090,12 +10129,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.27.0 - '@typescript-eslint/types': 8.27.0 - '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.27.0 + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.28.0 debug: 4.4.0(supports-color@10.0.0) eslint: 9.23.0(jiti@1.21.7) typescript: 5.8.2 @@ -10107,10 +10146,15 @@ snapshots: '@typescript-eslint/types': 8.27.0 '@typescript-eslint/visitor-keys': 8.27.0 - '@typescript-eslint/type-utils@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/scope-manager@8.28.0': dependencies: - '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) - '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + + '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) debug: 4.4.0(supports-color@10.0.0) eslint: 9.23.0(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.8.2) @@ -10120,6 +10164,8 @@ snapshots: '@typescript-eslint/types@8.27.0': {} + '@typescript-eslint/types@8.28.0': {} + '@typescript-eslint/typescript-estree@8.27.0(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 8.27.0 @@ -10134,6 +10180,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.2)': + dependencies: + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + debug: 4.4.0(supports-color@10.0.0) + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) @@ -10145,21 +10205,37 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + eslint: 9.23.0(jiti@1.21.7) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.27.0': dependencies: '@typescript-eslint/types': 8.27.0 eslint-visitor-keys: 4.2.0 - '@verdaccio/auth@8.0.0-next-8.7': + '@typescript-eslint/visitor-keys@8.28.0': dependencies: - '@verdaccio/config': 8.0.0-next-8.7 - '@verdaccio/core': 8.0.0-next-8.7 - '@verdaccio/loaders': 8.0.0-next-8.4 - '@verdaccio/signature': 8.0.0-next-8.1 - '@verdaccio/utils': 8.1.0-next-8.7 + '@typescript-eslint/types': 8.28.0 + eslint-visitor-keys: 4.2.0 + + '@verdaccio/auth@8.0.0-next-8.13': + dependencies: + '@verdaccio/config': 8.0.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/loaders': 8.0.0-next-8.5 + '@verdaccio/signature': 8.0.0-next-8.5 + '@verdaccio/utils': 8.1.0-next-8.13 debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.7 + verdaccio-htpasswd: 13.0.0-next-8.13 transitivePeerDependencies: - supports-color @@ -10168,10 +10244,10 @@ snapshots: http-errors: 2.0.0 http-status-codes: 2.2.0 - '@verdaccio/config@8.0.0-next-8.7': + '@verdaccio/config@8.0.0-next-8.13': dependencies: - '@verdaccio/core': 8.0.0-next-8.7 - '@verdaccio/utils': 8.1.0-next-8.7 + '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/utils': 8.1.0-next-8.13 debug: 4.4.0(supports-color@10.0.0) js-yaml: 4.1.0 lodash: 4.17.21 @@ -10179,35 +10255,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/core@8.0.0-next-8.1': + '@verdaccio/core@8.0.0-next-8.13': dependencies: ajv: 8.17.1 - core-js: 3.37.1 + core-js: 3.40.0 http-errors: 2.0.0 http-status-codes: 2.3.0 process-warning: 1.0.0 - semver: 7.6.3 - - '@verdaccio/core@8.0.0-next-8.7': - dependencies: - ajv: 8.17.1 - core-js: 3.37.1 - http-errors: 2.0.0 - http-status-codes: 2.3.0 - process-warning: 1.0.0 - semver: 7.6.3 + semver: 7.7.1 '@verdaccio/file-locking@10.3.1': dependencies: lockfile: 1.0.4 - '@verdaccio/file-locking@13.0.0-next-8.2': + '@verdaccio/file-locking@13.0.0-next-8.3': dependencies: lockfile: 1.0.4 - '@verdaccio/loaders@8.0.0-next-8.4': + '@verdaccio/loaders@8.0.0-next-8.5': dependencies: - debug: 4.3.7 + debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 transitivePeerDependencies: - supports-color @@ -10225,16 +10292,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/logger-commons@8.0.0-next-8.7': + '@verdaccio/logger-commons@8.0.0-next-8.13': dependencies: - '@verdaccio/core': 8.0.0-next-8.7 - '@verdaccio/logger-prettify': 8.0.0-next-8.1 + '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/logger-prettify': 8.0.0-next-8.2 colorette: 2.0.20 debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color - '@verdaccio/logger-prettify@8.0.0-next-8.1': + '@verdaccio/logger-prettify@8.0.0-next-8.2': dependencies: colorette: 2.0.20 dayjs: 1.11.13 @@ -10242,19 +10309,19 @@ snapshots: pino-abstract-transport: 1.2.0 sonic-boom: 3.8.1 - '@verdaccio/logger@8.0.0-next-8.7': + '@verdaccio/logger@8.0.0-next-8.13': dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.7 - pino: 9.5.0 + '@verdaccio/logger-commons': 8.0.0-next-8.13 + pino: 9.6.0 transitivePeerDependencies: - supports-color - '@verdaccio/middleware@8.0.0-next-8.7': + '@verdaccio/middleware@8.0.0-next-8.13': dependencies: - '@verdaccio/config': 8.0.0-next-8.7 - '@verdaccio/core': 8.0.0-next-8.7 - '@verdaccio/url': 13.0.0-next-8.7 - '@verdaccio/utils': 8.1.0-next-8.7 + '@verdaccio/config': 8.0.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/url': 13.0.0-next-8.13 + '@verdaccio/utils': 8.1.0-next-8.13 debug: 4.4.0(supports-color@10.0.0) express: 4.21.2 express-rate-limit: 5.5.1 @@ -10264,22 +10331,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/search-indexer@8.0.0-next-8.2': {} + '@verdaccio/search-indexer@8.0.0-next-8.3': {} - '@verdaccio/signature@8.0.0-next-8.1': + '@verdaccio/signature@8.0.0-next-8.5': dependencies: - debug: 4.3.7 + '@verdaccio/config': 8.0.0-next-8.13 + debug: 4.4.0(supports-color@10.0.0) jsonwebtoken: 9.0.2 transitivePeerDependencies: - supports-color '@verdaccio/streams@10.2.1': {} - '@verdaccio/tarball@13.0.0-next-8.7': + '@verdaccio/tarball@13.0.0-next-8.13': dependencies: - '@verdaccio/core': 8.0.0-next-8.7 - '@verdaccio/url': 13.0.0-next-8.7 - '@verdaccio/utils': 8.1.0-next-8.7 + '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/url': 13.0.0-next-8.13 + '@verdaccio/utils': 8.1.0-next-8.13 debug: 4.4.0(supports-color@10.0.0) gunzip-maybe: 1.4.2 lodash: 4.17.21 @@ -10287,30 +10355,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/ui-theme@8.0.0-next-8.7': {} + '@verdaccio/ui-theme@8.0.0-next-8.13': {} - '@verdaccio/url@13.0.0-next-8.7': + '@verdaccio/url@13.0.0-next-8.13': dependencies: - '@verdaccio/core': 8.0.0-next-8.7 + '@verdaccio/core': 8.0.0-next-8.13 debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 validator: 13.12.0 transitivePeerDependencies: - supports-color - '@verdaccio/utils@7.0.1-next-8.1': + '@verdaccio/utils@8.1.0-next-8.13': dependencies: - '@verdaccio/core': 8.0.0-next-8.1 + '@verdaccio/core': 8.0.0-next-8.13 lodash: 4.17.21 minimatch: 7.4.6 - semver: 7.6.3 - - '@verdaccio/utils@8.1.0-next-8.7': - dependencies: - '@verdaccio/core': 8.0.0-next-8.7 - lodash: 4.17.21 - minimatch: 7.4.6 - semver: 7.6.3 + semver: 7.7.1 '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0))': dependencies: @@ -11252,18 +11313,6 @@ snapshots: dependencies: mime-db: 1.54.0 - compression@1.7.5: - dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.0.2 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - compression@1.8.0: dependencies: bytes: 3.1.2 @@ -11340,7 +11389,7 @@ snapshots: dependencies: browserslist: 4.24.4 - core-js@3.37.1: {} + core-js@3.40.0: {} core-util-is@1.0.2: {} @@ -11871,11 +11920,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -11885,7 +11934,7 @@ snapshots: dependencies: eslint: 9.23.0(jiti@1.21.7) - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11896,7 +11945,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11908,7 +11957,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -12082,7 +12131,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.0(supports-color@10.0.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14123,7 +14172,7 @@ snapshots: pino-std-serializers@7.0.0: {} - pino@9.5.0: + pino@9.6.0: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -14369,10 +14418,6 @@ snapshots: dependencies: side-channel: 1.1.0 - qs@6.13.1: - dependencies: - side-channel: 1.1.0 - qs@6.14.0: dependencies: side-channel: 1.1.0 @@ -14482,7 +14527,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.27.0 regex-parser@2.3.1: {} @@ -15583,10 +15628,10 @@ snapshots: vary@1.1.2: {} - verdaccio-audit@13.0.0-next-8.7(encoding@0.1.13): + verdaccio-audit@13.0.0-next-8.13(encoding@0.1.13): dependencies: - '@verdaccio/config': 8.0.0-next-8.7 - '@verdaccio/core': 8.0.0-next-8.7 + '@verdaccio/config': 8.0.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.13 express: 4.21.2 https-proxy-agent: 5.0.1(supports-color@10.0.0) node-fetch: 2.6.7(encoding@0.1.13) @@ -15598,39 +15643,40 @@ snapshots: dependencies: '@verdaccio/commons-api': 10.2.0 - verdaccio-htpasswd@13.0.0-next-8.7: + verdaccio-htpasswd@13.0.0-next-8.13: dependencies: - '@verdaccio/core': 8.0.0-next-8.7 - '@verdaccio/file-locking': 13.0.0-next-8.2 + '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/file-locking': 13.0.0-next-8.3 apache-md5: 1.1.8 bcryptjs: 2.4.3 - core-js: 3.37.1 + core-js: 3.40.0 debug: 4.4.0(supports-color@10.0.0) http-errors: 2.0.0 unix-crypt-td-js: 1.1.4 transitivePeerDependencies: - supports-color - verdaccio@6.0.5(encoding@0.1.13): + verdaccio@6.1.0(encoding@0.1.13): dependencies: - '@cypress/request': 3.0.7 - '@verdaccio/auth': 8.0.0-next-8.7 - '@verdaccio/config': 8.0.0-next-8.7 - '@verdaccio/core': 8.0.0-next-8.7 + '@cypress/request': 3.0.8 + '@verdaccio/auth': 8.0.0-next-8.13 + '@verdaccio/config': 8.0.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/loaders': 8.0.0-next-8.5 '@verdaccio/local-storage-legacy': 11.0.2 - '@verdaccio/logger': 8.0.0-next-8.7 - '@verdaccio/middleware': 8.0.0-next-8.7 - '@verdaccio/search-indexer': 8.0.0-next-8.2 - '@verdaccio/signature': 8.0.0-next-8.1 + '@verdaccio/logger': 8.0.0-next-8.13 + '@verdaccio/middleware': 8.0.0-next-8.13 + '@verdaccio/search-indexer': 8.0.0-next-8.3 + '@verdaccio/signature': 8.0.0-next-8.5 '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.7 - '@verdaccio/ui-theme': 8.0.0-next-8.7 - '@verdaccio/url': 13.0.0-next-8.7 - '@verdaccio/utils': 7.0.1-next-8.1 + '@verdaccio/tarball': 13.0.0-next-8.13 + '@verdaccio/ui-theme': 8.0.0-next-8.13 + '@verdaccio/url': 13.0.0-next-8.13 + '@verdaccio/utils': 8.1.0-next-8.13 JSONStream: 1.3.5 async: 3.2.6 clipanion: 4.0.0-rc.4 - compression: 1.7.5 + compression: 1.8.0 cors: 2.8.5 debug: 4.4.0(supports-color@10.0.0) envinfo: 7.14.0 @@ -15648,8 +15694,8 @@ snapshots: pkginfo: 0.4.1 semver: 7.6.3 validator: 13.12.0 - verdaccio-audit: 13.0.0-next-8.7(encoding@0.1.13) - verdaccio-htpasswd: 13.0.0-next-8.7 + verdaccio-audit: 13.0.0-next-8.13(encoding@0.1.13) + verdaccio-htpasswd: 13.0.0-next-8.13 transitivePeerDependencies: - encoding - supports-color From 911c124003722df6fc126aee9b301192bcc17772 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 25 Mar 2025 06:04:02 +0000 Subject: [PATCH 066/160] build: update github/codeql-action action to v3.28.13 --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0542d4a5e077..6ad9d6806a7e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -46,6 +46,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 + uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: sarif_file: results.sarif From 80a778a8689afc4085851ba01c7ef7efe2171307 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 25 Mar 2025 05:04:19 +0000 Subject: [PATCH 067/160] build: update devinfra digest to be69a70 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 685ca2ffbef4..37c4ade799fd 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "ad960c29189d0bfccbd35c4d47d3d7bff9da3666", + commit = "be69a70efc9f2331083d76073427c0c81ec15a1e", remote = "https://github.com/angular/dev-infra.git", ) From c1de633007c423cfd9113cc781b5647e59306146 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 25 Mar 2025 11:53:16 -0400 Subject: [PATCH 068/160] feat(@angular/build): allow control of source map sources content for application builds The `sourceMap` option now contains an additional sub-option named `sourcesContent` that allows the exclusion of original file content from generated source maps. This option affects both JavaScript and stylesheet source maps. The value of the `sourcesContent` option defaults to `true`. Example usage to disable sources content: ``` "sourceMap": { "scripts": true, "styles": true, "sourcesContent": false } ``` --- .../src/builders/application/schema.json | 5 ++ .../builders/application/setup-bundling.ts | 1 + .../tests/options/sourcemap_spec.ts | 76 +++++++++++++++++++ .../tools/esbuild/application-code-bundle.ts | 1 + .../build/src/tools/esbuild/global-styles.ts | 1 + .../esbuild/stylesheets/bundle-options.ts | 2 + .../build/src/utils/normalize-source-maps.ts | 2 + 7 files changed, 88 insertions(+) diff --git a/packages/angular/build/src/builders/application/schema.json b/packages/angular/build/src/builders/application/schema.json index fabb4dcddfcc..38232fe0ccbb 100644 --- a/packages/angular/build/src/builders/application/schema.json +++ b/packages/angular/build/src/builders/application/schema.json @@ -370,6 +370,11 @@ "type": "boolean", "description": "Resolve vendor packages source maps.", "default": false + }, + "sourcesContent": { + "type": "boolean", + "description": "Output original source content for files within the source map.", + "default": true } }, "additionalProperties": false diff --git a/packages/angular/build/src/builders/application/setup-bundling.ts b/packages/angular/build/src/builders/application/setup-bundling.ts index 413c625eb81c..9b47bc67e49d 100644 --- a/packages/angular/build/src/builders/application/setup-bundling.ts +++ b/packages/angular/build/src/builders/application/setup-bundling.ts @@ -177,6 +177,7 @@ export function createComponentStyleBundler( // the same as being disabled. Disabling has the advantage of avoiding the overhead // of sourcemap processing. sourcemapOptions.styles && !sourcemapOptions.hidden ? 'linked' : false, + sourcesContent: sourcemapOptions.sourcesContent, outputNames, includePaths: stylePreprocessorOptions?.includePaths, // string[] | undefined' is not assignable to type '(Version | DeprecationOrId)[] | undefined'. diff --git a/packages/angular/build/src/builders/application/tests/options/sourcemap_spec.ts b/packages/angular/build/src/builders/application/tests/options/sourcemap_spec.ts index 72df6c710f35..c5cb8c321d32 100644 --- a/packages/angular/build/src/builders/application/tests/options/sourcemap_spec.ts +++ b/packages/angular/build/src/builders/application/tests/options/sourcemap_spec.ts @@ -209,6 +209,82 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { harness.expectFile('dist/browser/main.js.map').content.toContain('"x_google_ignoreList"'); }); + it(`should not include 'sourcesContent' field when 'sourcesContent' suboption is false`, async () => { + await harness.writeFile('src/styles.css', `div { flex: 1 }`); + + harness.useTarget('build', { + ...BASE_OPTIONS, + styles: ['src/styles.css'], + sourceMap: { scripts: true, styles: true, sourcesContent: false }, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + + harness.expectFile('dist/browser/main.js.map').content.not.toContain('"sourcesContent"'); + + harness.expectFile('dist/browser/styles.css.map').toExist(); + harness.expectFile('dist/browser/styles.css.map').content.not.toContain('"sourcesContent"'); + }); + + it(`should include 'sourcesContent' field when 'sourcesContent' suboption is true`, async () => { + await harness.writeFile('src/styles.css', `div { flex: 1 }`); + + harness.useTarget('build', { + ...BASE_OPTIONS, + styles: ['src/styles.css'], + sourceMap: { scripts: true, styles: true, sourcesContent: true }, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + + harness.expectFile('dist/browser/main.js.map').content.toContain('"sourcesContent"'); + + harness.expectFile('dist/browser/styles.css.map').toExist(); + harness.expectFile('dist/browser/styles.css.map').content.toContain('"sourcesContent"'); + }); + + it(`should include 'sourcesContent' field when 'sourcesContent' suboption is not present`, async () => { + await harness.writeFile('src/styles.css', `div { flex: 1 }`); + + harness.useTarget('build', { + ...BASE_OPTIONS, + styles: ['src/styles.css'], + sourceMap: { scripts: true, styles: true }, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + + harness.expectFile('dist/browser/main.js.map').content.toContain('"sourcesContent"'); + + harness.expectFile('dist/browser/styles.css.map').toExist(); + harness.expectFile('dist/browser/styles.css.map').content.toContain('"sourcesContent"'); + }); + + it(`should include 'sourcesContent' field when 'sourceMap' is true`, async () => { + await harness.writeFile('src/styles.css', `div { flex: 1 }`); + + harness.useTarget('build', { + ...BASE_OPTIONS, + styles: ['src/styles.css'], + sourceMap: true, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + + harness.expectFile('dist/browser/main.js.map').content.toContain('"sourcesContent"'); + + harness.expectFile('dist/browser/styles.css.map').toExist(); + harness.expectFile('dist/browser/styles.css.map').content.toContain('"sourcesContent"'); + }); + it('should generate component sourcemaps when sourcemaps when true', async () => { await harness.writeFile('src/app/app.component.css', `* { color: red}`); diff --git a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts index df7371e3a4da..b955ff1ebfec 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -586,6 +586,7 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu outdir: workspaceRoot, outExtension: outExtension ? { '.js': `.${outExtension}` } : undefined, sourcemap: sourcemapOptions.scripts && (sourcemapOptions.hidden ? 'external' : true), + sourcesContent: sourcemapOptions.sourcesContent, splitting: true, chunkNames: options.namedChunks ? '[name]-[hash]' : 'chunk-[hash]', tsconfig, diff --git a/packages/angular/build/src/tools/esbuild/global-styles.ts b/packages/angular/build/src/tools/esbuild/global-styles.ts index 64f670971c3d..682885c43350 100644 --- a/packages/angular/build/src/tools/esbuild/global-styles.ts +++ b/packages/angular/build/src/tools/esbuild/global-styles.ts @@ -53,6 +53,7 @@ export function createGlobalStylesBundleOptions( optimization: !!optimizationOptions.styles.minify, inlineFonts: !!optimizationOptions.fonts.inline, sourcemap: !!sourcemapOptions.styles && (sourcemapOptions.hidden ? 'external' : true), + sourcesContent: sourcemapOptions.sourcesContent, preserveSymlinks, target, externalDependencies, diff --git a/packages/angular/build/src/tools/esbuild/stylesheets/bundle-options.ts b/packages/angular/build/src/tools/esbuild/stylesheets/bundle-options.ts index 2a6200124ea5..9bbcb7c5ecb8 100644 --- a/packages/angular/build/src/tools/esbuild/stylesheets/bundle-options.ts +++ b/packages/angular/build/src/tools/esbuild/stylesheets/bundle-options.ts @@ -24,6 +24,7 @@ export interface BundleStylesheetOptions { inlineFonts: boolean; preserveSymlinks?: boolean; sourcemap: boolean | 'external' | 'inline' | 'linked'; + sourcesContent?: boolean; outputNames: { bundles: string; media: string }; includePaths?: string[]; sass?: StylesheetPluginsass; @@ -77,6 +78,7 @@ export function createStylesheetBundleOptions( minify: options.optimization, metafile: true, sourcemap: options.sourcemap, + sourcesContent: options.sourcesContent, outdir: options.workspaceRoot, write: false, platform: 'browser', diff --git a/packages/angular/build/src/utils/normalize-source-maps.ts b/packages/angular/build/src/utils/normalize-source-maps.ts index ddeb3e5322d4..cf26ca236bae 100644 --- a/packages/angular/build/src/utils/normalize-source-maps.ts +++ b/packages/angular/build/src/utils/normalize-source-maps.ts @@ -13,11 +13,13 @@ export function normalizeSourceMaps(sourceMap: SourceMapUnion): SourceMapClass { const styles = typeof sourceMap === 'object' ? sourceMap.styles : sourceMap; const hidden = (typeof sourceMap === 'object' && sourceMap.hidden) || false; const vendor = (typeof sourceMap === 'object' && sourceMap.vendor) || false; + const sourcesContent = typeof sourceMap === 'object' ? sourceMap.sourcesContent : sourceMap; return { vendor, hidden, scripts, styles, + sourcesContent, }; } From 5c9b371606869f35a92726a2aaa6f13008b1a84e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 25 Mar 2025 12:25:20 -0400 Subject: [PATCH 069/160] refactor(@angular/build): use newer Node.js `cp` API for asset copying When using Node.js v22 (minimum of v22.11 for v22 with Angular v20), the application build system will now use the Node.js `cp` filesystem API instead of the `copyFile` API. This newer API provides equivalent functionality while also preserving timestamps for copied assets. Additionally, it supports potential future internal refactorings to support full direct directory copying. --- .../build/src/builders/application/index.ts | 14 +++++++++++++- tests/legacy-cli/e2e/tests/build/assets.ts | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/application/index.ts b/packages/angular/build/src/builders/application/index.ts index afe657e59da7..80261c41277f 100644 --- a/packages/angular/build/src/builders/application/index.ts +++ b/packages/angular/build/src/builders/application/index.ts @@ -28,6 +28,8 @@ import { import { Result, ResultKind } from './results'; import { Schema as ApplicationBuilderOptions } from './schema'; +const isNodeV22orHigher = Number(process.versions.node.split('.', 1)[0]) >= 22; + export type { ApplicationBuilderOptions }; export async function* buildApplicationInternal( @@ -211,7 +213,17 @@ export async function* buildApplication( await fs.writeFile(fullFilePath, file.contents); } else { // Copy file contents - await fs.copyFile(file.inputPath, fullFilePath, fs.constants.COPYFILE_FICLONE); + if (isNodeV22orHigher) { + // Use newer `cp` API on Node.js 22+ (minimum v22 for CLI is 22.11) + await fs.cp(file.inputPath, fullFilePath, { + mode: fs.constants.COPYFILE_FICLONE, + preserveTimestamps: true, + }); + } else { + // For Node.js 20 use `copyFile` (`cp` is not stable for v20) + // TODO: Remove when Node.js 20 is no longer supported + await fs.copyFile(file.inputPath, fullFilePath, fs.constants.COPYFILE_FICLONE); + } } }); diff --git a/tests/legacy-cli/e2e/tests/build/assets.ts b/tests/legacy-cli/e2e/tests/build/assets.ts index 5c484f02d5cd..1875268c5afe 100644 --- a/tests/legacy-cli/e2e/tests/build/assets.ts +++ b/tests/legacy-cli/e2e/tests/build/assets.ts @@ -1,12 +1,17 @@ +import assert from 'node:assert/strict'; import * as fs from 'node:fs'; import { expectFileToExist, expectFileToMatch, writeFile } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; import { expectToFail } from '../../utils/utils'; +import { getGlobalVariable } from '../../utils/env'; + +const isNodeV22orHigher = Number(process.versions.node.split('.', 1)[0]) >= 22; export default async function () { await writeFile('public/.file', ''); await writeFile('public/test.abc', 'hello world'); + const originalStats = fs.statSync('public/test.abc', { bigint: true }); await ng('build', '--configuration=development'); @@ -15,6 +20,15 @@ export default async function () { await expectFileToMatch('dist/test-project/browser/test.abc', 'hello world'); await expectToFail(() => expectFileToExist('dist/test-project/browser/.gitkeep')); + // Timestamp preservation only supported with application build system on Node.js v22+ + if (isNodeV22orHigher && getGlobalVariable('argv')['esbuild']) { + const outputStats = fs.statSync('dist/test-project/browser/test.abc', { bigint: true }); + assert( + originalStats.mtimeMs === outputStats.mtimeMs, + 'Asset file modified timestamp should be preserved.', + ); + } + // Ensure `followSymlinks` option follows symlinks await updateJsonFile('angular.json', (workspaceJson) => { const appArchitect = workspaceJson.projects['test-project'].architect; From 1f62b28e03369f55f1a4cbb83c6e7d52985d50c4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 25 Mar 2025 16:42:55 -0400 Subject: [PATCH 070/160] test: improve resilience of asset timestamp E2E test The test now uses an asset that is already on disk. Using an asset that was just written within the test may cause timestamps to not yet be synced to disk. --- tests/legacy-cli/e2e/tests/build/assets.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/build/assets.ts b/tests/legacy-cli/e2e/tests/build/assets.ts index 1875268c5afe..fbd5f8f70a6c 100644 --- a/tests/legacy-cli/e2e/tests/build/assets.ts +++ b/tests/legacy-cli/e2e/tests/build/assets.ts @@ -11,7 +11,8 @@ const isNodeV22orHigher = Number(process.versions.node.split('.', 1)[0]) >= 22; export default async function () { await writeFile('public/.file', ''); await writeFile('public/test.abc', 'hello world'); - const originalStats = fs.statSync('public/test.abc', { bigint: true }); + + const originalStats = fs.statSync('public/favicon.ico', { bigint: true }); await ng('build', '--configuration=development'); @@ -22,9 +23,10 @@ export default async function () { // Timestamp preservation only supported with application build system on Node.js v22+ if (isNodeV22orHigher && getGlobalVariable('argv')['esbuild']) { - const outputStats = fs.statSync('dist/test-project/browser/test.abc', { bigint: true }); - assert( - originalStats.mtimeMs === outputStats.mtimeMs, + const outputStats = fs.statSync('dist/test-project/browser/favicon.ico', { bigint: true }); + assert.equal( + originalStats.mtimeMs, + outputStats.mtimeMs, 'Asset file modified timestamp should be preserved.', ); } From 2b73b7251d646a9a6c166880db7cd54cae38cb4d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 26 Mar 2025 07:43:31 +0000 Subject: [PATCH 071/160] test: ensure atime and mtime are rounded consistently in tests Node.js handles time precision differently, which may cause mtime-based tests to fail. This update ensures that atime and mtime values are rounded to the same precision, preventing inconsistencies in file timestamp comparisons. --- tests/legacy-cli/e2e/tests/build/assets.ts | 40 +++++++++++++++------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/build/assets.ts b/tests/legacy-cli/e2e/tests/build/assets.ts index fbd5f8f70a6c..93c89b5cad86 100644 --- a/tests/legacy-cli/e2e/tests/build/assets.ts +++ b/tests/legacy-cli/e2e/tests/build/assets.ts @@ -1,6 +1,6 @@ import assert from 'node:assert/strict'; -import * as fs from 'node:fs'; -import { expectFileToExist, expectFileToMatch, writeFile } from '../../utils/fs'; +import { writeFile, stat, mkdir, symlink, utimes } from 'node:fs/promises'; +import { expectFileToExist, expectFileToMatch } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; import { expectToFail } from '../../utils/utils'; @@ -9,13 +9,19 @@ import { getGlobalVariable } from '../../utils/env'; const isNodeV22orHigher = Number(process.versions.node.split('.', 1)[0]) >= 22; export default async function () { + // Update the atime and mtime of the original file. + // Note: Node.js has different time precision, which may cause mtime-based tests to fail. + // Ensure both values are rounded to the same precision for consistency. + // Example: + // Original: '1742973507738.0234' + // Node.js CP: '1742973507737.999' + const { atime, mtime } = await stat('public/favicon.ico'); + await utimes('public/favicon.ico', atime, mtime); + await writeFile('public/.file', ''); await writeFile('public/test.abc', 'hello world'); - const originalStats = fs.statSync('public/favicon.ico', { bigint: true }); - await ng('build', '--configuration=development'); - await expectFileToExist('dist/test-project/browser/favicon.ico'); await expectFileToExist('dist/test-project/browser/.file'); await expectFileToMatch('dist/test-project/browser/test.abc', 'hello world'); @@ -23,7 +29,11 @@ export default async function () { // Timestamp preservation only supported with application build system on Node.js v22+ if (isNodeV22orHigher && getGlobalVariable('argv')['esbuild']) { - const outputStats = fs.statSync('dist/test-project/browser/favicon.ico', { bigint: true }); + const [originalStats, outputStats] = await Promise.all([ + stat('public/favicon.ico'), + stat('dist/test-project/browser/favicon.ico'), + ]); + assert.equal( originalStats.mtimeMs, outputStats.mtimeMs, @@ -38,13 +48,17 @@ export default async function () { { glob: '**/*', input: 'public', followSymlinks: true }, ]; }); - fs.mkdirSync('dirToSymlink/subdir1', { recursive: true }); - fs.mkdirSync('dirToSymlink/subdir2/subsubdir1', { recursive: true }); - fs.writeFileSync('dirToSymlink/a.txt', ''); - fs.writeFileSync('dirToSymlink/subdir1/b.txt', ''); - fs.writeFileSync('dirToSymlink/subdir2/c.txt', ''); - fs.writeFileSync('dirToSymlink/subdir2/subsubdir1/d.txt', ''); - fs.symlinkSync(process.cwd() + '/dirToSymlink', 'public/symlinkDir'); + + await mkdir('dirToSymlink/subdir1', { recursive: true }); + await mkdir('dirToSymlink/subdir2/subsubdir1', { recursive: true }); + await symlink(process.cwd() + '/dirToSymlink', 'public/symlinkDir'); + + await Promise.all([ + writeFile('dirToSymlink/a.txt', ''), + writeFile('dirToSymlink/subdir1/b.txt', ''), + writeFile('dirToSymlink/subdir2/c.txt', ''), + writeFile('dirToSymlink/subdir2/subsubdir1/d.txt', ''), + ]); await ng('build', '--configuration=development'); From a4d59d8bed56c916d80ab811467bfcb31de5ad78 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 26 Mar 2025 09:19:01 +0000 Subject: [PATCH 072/160] docs: release notes for the v17.3.14 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c468ff28e932..730151ec3da7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 17.3.14 (2025-03-26) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | +| [cb8f859f1](https://github.com/angular/angular-cli/commit/cb8f859f181a325c15b91791c78f5326f22bb7f5) | fix | update vite to 5.4.15 | + + + # 20.0.0-next.2 (2025-03-19) From d2e5c1be54288c85adadd1aead47866485ba1f61 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 26 Mar 2025 09:45:13 +0000 Subject: [PATCH 073/160] docs: release notes for the v18.2.16 release --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 730151ec3da7..a97c199f1a2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ + + +# 18.2.16 (2025-03-26) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | +| [4267a80c5](https://github.com/angular/angular-cli/commit/4267a80c5cd1e9e6aaae0f9090e21c2d71a6887f) | fix | remove `@vitejs/plugin-basic-ssl` from dependencies | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | +| [9c2904d0d](https://github.com/angular/angular-cli/commit/9c2904d0d3a7b2790b27d21c1ff23e6d8a01c4f0) | fix | update vite to 5.4.15 | + + + # 17.3.14 (2025-03-26) From bcfc1a3dc7c5fc3cd47034238f09d5e2f5d5358b Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 26 Mar 2025 10:27:06 +0000 Subject: [PATCH 074/160] docs: release notes for the v19.2.5 release --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a97c199f1a2c..1abd736d421f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ + + +# 19.2.5 (2025-03-26) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------- | +| [20455e2a6](https://github.com/angular/angular-cli/commit/20455e2a64558fcbb11906cb414a99d3976645d6) | fix | correct handling of response/request errors | +| [32b1dcd91](https://github.com/angular/angular-cli/commit/32b1dcd91b9f351bb6baa54f52c81c465185e01b) | fix | handle undefined `getOrCreateAngularServerApp` during error compilation | +| [7552a9fec](https://github.com/angular/angular-cli/commit/7552a9fec971f64ff27d78754ed13654e9a56b43) | fix | normalize karma asset paths before lookup | +| [1eb5b4357](https://github.com/angular/angular-cli/commit/1eb5b43575ab9908122606b94c0aaa53718678aa) | fix | update vite to 6.2.3 | + + + # 18.2.16 (2025-03-26) From 34c2530340aa8caac4db4578260909b26a07b84f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 26 Mar 2025 10:28:49 +0000 Subject: [PATCH 075/160] release: cut the v20.0.0-next.3 release --- CHANGELOG.md | 43 +++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1abd736d421f..82b5f7364a01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,46 @@ + + +# 20.0.0-next.3 (2025-03-26) + +## Breaking Changes + +### @angular/cli + +- Node.js versions from 22.0 to 22.10 are no longer supported + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------- | +| [9e6b9b537](https://github.com/angular/angular-cli/commit/9e6b9b5379d0448578b3bfb6100852dea7febe75) | fix | add type checking of host bindings to strict config | +| [381d35fe4](https://github.com/angular/angular-cli/commit/381d35fe40f062713eac550a12b58c30c1ec33a9) | fix | remove empty `scripts` option value from new applications | +| [a910fe9ae](https://github.com/angular/angular-cli/commit/a910fe9ae0423146f6509c5b9c45c88415365c9f) | fix | remove explicit `outputPath` option value from generated applications | + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | +| [64732534e](https://github.com/angular/angular-cli/commit/64732534ecb84d702bde2469466a05e765879f9a) | fix | update minimum supported Node.js 22 version to 22.11.0 | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------- | +| [c1de63300](https://github.com/angular/angular-cli/commit/c1de633007c423cfd9113cc781b5647e59306146) | feat | allow control of source map sources content for application builds | +| [9b682e625](https://github.com/angular/angular-cli/commit/9b682e62519e761477e6266650239bf58026a9f4) | feat | support a default outputPath option for applications | +| [156a14e38](https://github.com/angular/angular-cli/commit/156a14e387d83002fa01b33d574a6fbc078dad84) | fix | correct handling of response/request errors | +| [a8817a3b2](https://github.com/angular/angular-cli/commit/a8817a3b2a9a94bdfcba4bf690e217e7d2d4686c) | fix | handle undefined `getOrCreateAngularServerApp` during error compilation | +| [bd917d92a](https://github.com/angular/angular-cli/commit/bd917d92a653b1a5ece7ab96adfde8f8d282c34a) | fix | normalize karma asset paths before lookup | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------- | +| [63428f3f1](https://github.com/angular/angular-cli/commit/63428f3f1e2ffd427011ea8a17b70f8829ae0bdf) | perf | flush headers prior to start rendering the HTML | +| [6bd7b9b4a](https://github.com/angular/angular-cli/commit/6bd7b9b4a59240caa4f19185570aec8263d8a0a7) | perf | optimized request handling performance | + + + # 19.2.5 (2025-03-26) diff --git a/package.json b/package.json index 6cdeac8f31b4..f91fa13979ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "20.0.0-next.2", + "version": "20.0.0-next.3", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From 4a52a7b1a99996b8767d87a882aaae0ce2b2213a Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Wed, 26 Mar 2025 16:56:11 +0000 Subject: [PATCH 076/160] build: disable remote upload of local action results to RBE cache disable remote upload for local actions --- .bazelrc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index d736ebd75612..bf6560235d64 100644 --- a/.bazelrc +++ b/.bazelrc @@ -135,6 +135,7 @@ build:remote --platforms=@devinfra//bazel/remote-execution:platform_with_network # Set remote caching settings build:remote --remote_accept_cached=true +build:remote --remote_upload_local_results=false # Force remote executions to consider the entire run as linux. # This is required for OSX cross-platform RBE. @@ -147,7 +148,7 @@ build:remote --google_default_credentials # Use HTTP remote cache build:remote-cache --remote_cache=https://storage.googleapis.com/angular-team-cache build:remote-cache --remote_accept_cached=true -build:remote-cache --remote_upload_local_results=true +build:remote-cache --remote_upload_local_results=false build:remote-cache --google_default_credentials ############################### From 25514b8bc725dc87ce029a6d1ea78e296ad9a404 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 27 Mar 2025 04:03:47 +0000 Subject: [PATCH 077/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 44 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 36 +-- package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 281 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 11 files changed, 225 insertions(+), 226 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 771a448c546f..71d68f079a48 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + - uses: angular/dev-infra/github-actions/branch-manager@5663ac5a55be066ceb7499d4f86a0883386554af with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 87d56d850233..cac5e8c428b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -57,11 +57,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -81,13 +81,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -102,7 +102,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -123,13 +123,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -145,13 +145,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -163,13 +163,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -197,11 +197,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 0ae6d2646a65..6832593c9e5b 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@5663ac5a55be066ceb7499d4f86a0883386554af with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + - uses: angular/dev-infra/github-actions/post-approval-changes@5663ac5a55be066ceb7499d4f86a0883386554af with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 98ff10e0ff0d..71e3b06b0187 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + - uses: angular/dev-infra/github-actions/feature-request@5663ac5a55be066ceb7499d4f86a0883386554af with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index e1b0249f7782..8dcbe9a20d90 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 74eb970f59a6..bf4055213cf1 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/linting/licenses@5663ac5a55be066ceb7499d4f86a0883386554af - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,7 +130,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -149,13 +149,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -172,12 +172,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index f91fa13979ca..f08fed44db8d 100644 --- a/package.json +++ b/package.json @@ -46,20 +46,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "20.0.0-next.3", - "@angular/cdk": "20.0.0-next.3", - "@angular/common": "20.0.0-next.3", - "@angular/compiler": "20.0.0-next.3", - "@angular/compiler-cli": "20.0.0-next.3", - "@angular/core": "20.0.0-next.3", - "@angular/forms": "20.0.0-next.3", - "@angular/localize": "20.0.0-next.3", - "@angular/material": "20.0.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e6534df23185ef6242fa2a6c04ca9567af750acb", - "@angular/platform-browser": "20.0.0-next.3", - "@angular/platform-server": "20.0.0-next.3", - "@angular/router": "20.0.0-next.3", - "@angular/service-worker": "20.0.0-next.3", + "@angular/animations": "20.0.0-next.4", + "@angular/cdk": "20.0.0-next.4", + "@angular/common": "20.0.0-next.4", + "@angular/compiler": "20.0.0-next.4", + "@angular/compiler-cli": "20.0.0-next.4", + "@angular/core": "20.0.0-next.4", + "@angular/forms": "20.0.0-next.4", + "@angular/localize": "20.0.0-next.4", + "@angular/material": "20.0.0-next.4", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#6b390aeba76dbef5c925e05ca9d2ae792c6232fe", + "@angular/platform-browser": "20.0.0-next.4", + "@angular/platform-server": "20.0.0-next.4", + "@angular/router": "20.0.0-next.4", + "@angular/service-worker": "20.0.0-next.4", "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "8.0.3", "@eslint/compat": "1.2.7", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 7f3db2c1203f..0849b9237014 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "20.0.0-next.3", - "@angular/compiler": "20.0.0-next.3", - "@angular/core": "20.0.0-next.3", - "@angular/platform-browser": "20.0.0-next.3", - "@angular/platform-server": "20.0.0-next.3", - "@angular/router": "20.0.0-next.3", + "@angular/common": "20.0.0-next.4", + "@angular/compiler": "20.0.0-next.4", + "@angular/core": "20.0.0-next.4", + "@angular/platform-browser": "20.0.0-next.4", + "@angular/platform-server": "20.0.0-next.4", + "@angular/router": "20.0.0-next.4", "@schematics/angular": "workspace:*" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 2ae86d646b6c..81e3d937513d 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", - "@angular/compiler": "20.0.0-next.3", - "@angular/compiler-cli": "20.0.0-next.3", + "@angular/compiler": "20.0.0-next.4", + "@angular/compiler-cli": "20.0.0-next.4", "typescript": "5.8.2", "webpack": "5.98.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60050e4a97bf..1f3324fba36c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,47 +15,47 @@ importers: .: devDependencies: '@angular/animations': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/cdk': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/common': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3 + specifier: 20.0.0-next.4 + version: 20.0.0-next.4 '@angular/compiler-cli': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) '@angular/core': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/localize': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(@angular/compiler@20.0.0-next.3) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(@angular/compiler@20.0.0-next.4) '@angular/material': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(ytwihe4lr4cvkw42tsewzwfy4m) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(oylo4douhe75q4m3y4wi7udlwy) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e6534df23185ef6242fa2a6c04ca9567af750acb - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e6534df23185ef6242fa2a6c04ca9567af750acb(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#6b390aeba76dbef5c925e05ca9d2ae792c6232fe + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6b390aeba76dbef5c925e05ca9d2ae792c6232fe(encoding@0.1.13) '@angular/platform-browser': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-server': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.4)(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/router': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.25.0 version: 1.25.0 @@ -437,7 +437,7 @@ importers: version: 4.2.2 ng-packagr: specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) postcss: specifier: 8.5.3 version: 8.5.3 @@ -521,23 +521,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3 + specifier: 20.0.0-next.4 + version: 20.0.0-next.4 '@angular/core': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-server': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.4)(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/router': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -759,7 +759,7 @@ importers: version: 3.0.3 ng-packagr: specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: specifier: 7.5.0 version: 7.5.0 @@ -856,11 +856,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3 + specifier: 20.0.0-next.4 + version: 20.0.0-next.4 '@angular/compiler-cli': - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) typescript: specifier: 5.8.2 version: 5.8.2 @@ -898,117 +898,117 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@20.0.0-next.3': - resolution: {integrity: sha512-hperYaQGLz1Y2O7CRVfp3ea+nztPqM//C1VdBHFXt3BH2E+IKYnMQilIc8KEwU56MYS0JYdcWYzM4/NYiV4ruA==} + '@angular/animations@20.0.0-next.4': + resolution: {integrity: sha512-LZRI0bUtsFXVGcH/B+nLIpsgPQmqFGzQ9GjDUsW4ZweBIdmbagIygkExhWVAYO+NxOedezpb4xzOL+D66oJdsg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 20.0.0-next.3 + '@angular/core': 20.0.0-next.4 - '@angular/cdk@20.0.0-next.3': - resolution: {integrity: sha512-xO5UPD1jsnS5NWU8XiUoU99MRkZiHozPPcPvQxF46j7O/MED5JJLDgGdmFa4DOPX018SmRFHKw2PVLvmgM7FKA==} + '@angular/cdk@20.0.0-next.4': + resolution: {integrity: sha512-gJnvo/EfiM+CNlAaAxUYEOWsdeFeEt+jodKNJVhnC0ARr+AKXPWxagzALSJB0bnEfaP+GwfkDPM1m/ONDXmsAw==} peerDependencies: '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@20.0.0-next.3': - resolution: {integrity: sha512-Ie5GhDhxSXTKw/nfZM/KIYSiEw1Nry/7tVoqpnDwRE12OkhyDCn+gW9X5ag42wNECCi99p+dnZuqnramZriV3A==} + '@angular/common@20.0.0-next.4': + resolution: {integrity: sha512-Qh7+7lFcTGjYWmlb0HOp/rRxdKWq0BPxFkw6xHHaFszzJKDv24Doj2akVf3SV2gi9f2lzIR5PICJLw00zy4jtA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 20.0.0-next.3 + '@angular/core': 20.0.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.0.0-next.3': - resolution: {integrity: sha512-TRAEMOQG6z/1GzmCJ6Khzdt0teDgC892O9unW1BBiCQqABjdb3/ahdiIIrK2TzsJPT9USzWfzT2jugFpaPwOgQ==} + '@angular/compiler-cli@20.0.0-next.4': + resolution: {integrity: sha512-BPBVbsWLzZe1sPl7/2rF8OLypLO0RDOSZeXarSb90JwlUX/pp6/85Cl566tPiqX7EWntnVhwlaMFiBmNTV5vrA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-next.3 + '@angular/compiler': 20.0.0-next.4 typescript: 5.8.2 - '@angular/compiler@20.0.0-next.3': - resolution: {integrity: sha512-gofIOMEFtyFZTTAvU/GTra2U1D2/tck2aQqInQVykwbSAezfnCfEztDmd3DgscbHIr/KzovsiL8guMTTjMGUZA==} + '@angular/compiler@20.0.0-next.4': + resolution: {integrity: sha512-1lQxn1L2yVtc631cwCf0ez50hqbmQXq562wJAaQmcJlfH2EoLcjtfP3xBCluEpI+Dpto7yxXA4Ms9FYPAk8HDA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} - '@angular/core@20.0.0-next.3': - resolution: {integrity: sha512-UYIUKeDB6UkTrYd5pCurIJav7gK7vwsbzH8DdfUrI32Zj7Yfyn5r7odG1VDIOTiCS54sK0D7rZLa8PtWD8QR6A==} + '@angular/core@20.0.0-next.4': + resolution: {integrity: sha512-LZIiGPsfyWxrlLcU1LQy3A+/OR6iyJ8Y40IsMnTFzZlQq96NomQM0AIksGjB2YyMM8z8VLBw5nvitVCbfVXn3w==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/compiler': 20.0.0-next.3 + '@angular/compiler': 20.0.0-next.4 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: '@angular/compiler': optional: true - '@angular/forms@20.0.0-next.3': - resolution: {integrity: sha512-Tv4H3R6XKyrROZXLHqiUB2LjB2dQgwvFFbp6dUqN4pnsKmgx0PbZJNnA3IwBo+9ONnNZZe9JbDRu6Z4+BZa5Dg==} + '@angular/forms@20.0.0-next.4': + resolution: {integrity: sha512-FatZvZriwOZ2WocTlhyRqasXdgbFrUa04n6Wvvn9zNDLiF3expW534R6djmcZQ20ynmHQjeJxBPF42Ark/zeaQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 20.0.0-next.3 - '@angular/core': 20.0.0-next.3 - '@angular/platform-browser': 20.0.0-next.3 + '@angular/common': 20.0.0-next.4 + '@angular/core': 20.0.0-next.4 + '@angular/platform-browser': 20.0.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@20.0.0-next.3': - resolution: {integrity: sha512-Kmz89nDEmFwcXy+yDeXAqDN+MTiv0Xt60QyCIwinmJVXeiKa0cE5ecEjUPThmOGRnEvIuuOSAV6lzsW7k7RzKA==} + '@angular/localize@20.0.0-next.4': + resolution: {integrity: sha512-uUXgFyVF4D4wJzZFUn1et3oc4ThlL72Dzc19Br5tNJkFgFDD73f/O+tJ+vrq0VqbDknpM2xxZcRSYoS7RGGKZw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-next.3 - '@angular/compiler-cli': 20.0.0-next.3 + '@angular/compiler': 20.0.0-next.4 + '@angular/compiler-cli': 20.0.0-next.4 - '@angular/material@20.0.0-next.3': - resolution: {integrity: sha512-TtwuOA8E9+G+ttNnhNL9S6dwphXQHf22os5/5HjfPBanBl/yEv4JypmW9FnrqSMCBRE4H4o2m4Tq0Jr7A3q45Q==} + '@angular/material@20.0.0-next.4': + resolution: {integrity: sha512-ryvtEO22VWaW554Wf1thsqa/m2NzKaSTHBb0klEeGtb5oWgUOXm8Dn86pCDxrXsMnCOvp5GG+viMJVf0D5QDxA==} peerDependencies: - '@angular/cdk': 20.0.0-next.3 + '@angular/cdk': 20.0.0-next.4 '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/forms': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e6534df23185ef6242fa2a6c04ca9567af750acb': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e6534df23185ef6242fa2a6c04ca9567af750acb} - version: 0.0.0-ad960c29189d0bfccbd35c4d47d3d7bff9da3666 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6b390aeba76dbef5c925e05ca9d2ae792c6232fe': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6b390aeba76dbef5c925e05ca9d2ae792c6232fe} + version: 0.0.0-5663ac5a55be066ceb7499d4f86a0883386554af hasBin: true - '@angular/platform-browser@20.0.0-next.3': - resolution: {integrity: sha512-rtBwaE0suHAHn5KpFIP6LKGRCIqCg9qPjQQrpgR4Yguke0peNFdY7j6k0oga+vd8xjxrRZftjXcC6cpK5itQGw==} + '@angular/platform-browser@20.0.0-next.4': + resolution: {integrity: sha512-9nnloL9JD3UZbgdYpRsFynkX99BBJbFZ1f8XlhWC3b0Vwwmlq6dXH96fuWSlpbHwz7+NVooUZmWOx8GI/qK/Uw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 20.0.0-next.3 - '@angular/common': 20.0.0-next.3 - '@angular/core': 20.0.0-next.3 + '@angular/animations': 20.0.0-next.4 + '@angular/common': 20.0.0-next.4 + '@angular/core': 20.0.0-next.4 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@20.0.0-next.3': - resolution: {integrity: sha512-1s71I0Oir60JQz/ewxD9G64YTsgns+f8dIpSCUYIMBZWOWEddjUQLmTu58bTRZiah7stzze0SuPHzwdKtlfPyQ==} + '@angular/platform-server@20.0.0-next.4': + resolution: {integrity: sha512-Iaszz4BBK882sNLo03cDV07P/qyDXmqax4N5f2QuoEx/GNDFSbePsRDJLshlB8MxnMClamEhOisZSVfwFZ+aKg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 20.0.0-next.3 - '@angular/compiler': 20.0.0-next.3 - '@angular/core': 20.0.0-next.3 - '@angular/platform-browser': 20.0.0-next.3 + '@angular/common': 20.0.0-next.4 + '@angular/compiler': 20.0.0-next.4 + '@angular/core': 20.0.0-next.4 + '@angular/platform-browser': 20.0.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@20.0.0-next.3': - resolution: {integrity: sha512-Nr2By+GuKoHkA4aUFCfJQmMQK73cETreD50iDE+ZeiRhQL0cM8NgIYCOFsroG9Dk6xXiwETyIDuyVWx4vrE+qQ==} + '@angular/router@20.0.0-next.4': + resolution: {integrity: sha512-cCAC6nsUTq9gWACqCZiLZUd42Fm4r4+7qQ4u52pFEe1Suhuh/7FqzBXXQAXrgoF1MiM903tmAdN7ZO5Yh5Wiig==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 20.0.0-next.3 - '@angular/core': 20.0.0-next.3 - '@angular/platform-browser': 20.0.0-next.3 + '@angular/common': 20.0.0-next.4 + '@angular/core': 20.0.0-next.4 + '@angular/platform-browser': 20.0.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@20.0.0-next.3': - resolution: {integrity: sha512-tsz/J+4vva9hkqythdLaz9VwAdJJFLQSEjDlPjRXEiR8asWnccoQWjOuhVtPgEljGwHU64URr7snRvKoYPmPUg==} + '@angular/service-worker@20.0.0-next.4': + resolution: {integrity: sha512-IiCqnhlIOmjkD907HOgw7G+0soJpqhqtTja6DB/Mya+tOv7pjNRF/Fb4P5W0Qt2CDWVIEh6kQ9x4d19/U13NPg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/core': 20.0.0-next.3 + '@angular/core': 20.0.0-next.4 rxjs: ^6.5.3 || ^7.4.0 '@babel/code-frame@7.26.2': @@ -7979,29 +7979,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/cdk@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/cdk@20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + parse5: 7.2.1 rxjs: 7.8.2 tslib: 2.8.1 - optionalDependencies: - parse5: 7.2.1 - '@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2)': + '@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2)': dependencies: - '@angular/compiler': 20.0.0-next.3 + '@angular/compiler': 20.0.0-next.4 '@babel/core': 7.26.10 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 @@ -8014,30 +8013,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.0.0-next.3': + '@angular/compiler@20.0.0-next.4': dependencies: tslib: 2.8.1 - '@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)': + '@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 zone.js: 0.15.0 optionalDependencies: - '@angular/compiler': 20.0.0-next.3 + '@angular/compiler': 20.0.0-next.4 - '@angular/forms@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/forms@20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@20.0.0-next.3(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(@angular/compiler@20.0.0-next.3)': + '@angular/localize@20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(@angular/compiler@20.0.0-next.4)': dependencies: - '@angular/compiler': 20.0.0-next.3 - '@angular/compiler-cli': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) + '@angular/compiler': 20.0.0-next.4 + '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) '@babel/core': 7.26.10 '@types/babel__core': 7.20.5 tinyglobby: 0.2.12 @@ -8045,17 +8044,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@20.0.0-next.3(ytwihe4lr4cvkw42tsewzwfy4m)': + '@angular/material@20.0.0-next.4(oylo4douhe75q4m3y4wi7udlwy)': dependencies: - '@angular/cdk': 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/forms': 20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) - '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/cdk': 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/forms': 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + '@angular/platform-browser': 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e6534df23185ef6242fa2a6c04ca9567af750acb(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6b390aeba76dbef5c925e05ca9d2ae792c6232fe(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 @@ -8072,35 +8071,35 @@ snapshots: transitivePeerDependencies: - encoding - '@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/animations': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/platform-server@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.3)(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/platform-server@20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.4)(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/compiler': 20.0.0-next.3 - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/compiler': 20.0.0-next.4 + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@20.0.0-next.3(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/router@20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.3(@angular/animations@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@20.0.0-next.3(@angular/core@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/service-worker@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -13730,9 +13729,9 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.1(@angular/compiler-cli@20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): + ng-packagr@20.0.0-next.1(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: - '@angular/compiler-cli': 20.0.0-next.3(@angular/compiler@20.0.0-next.3)(typescript@5.8.2) + '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) '@rollup/plugin-json': 6.1.0(rollup@4.37.0) '@rollup/wasm-node': 4.37.0 ajv: 8.17.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 6f199c10352e..59d1d288da59 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#59ce2356b542c352581b29c38a3eab070f5ed185", - "@angular/cdk": "github:angular/cdk-builds#a57ec0e4ef294c4e237bfa3e4908827c7e8b12dd", - "@angular/common": "github:angular/common-builds#c457c2b45626bce7002fd0690b0da3cd81744b50", - "@angular/compiler": "github:angular/compiler-builds#2f0b4a6e1b153939b6de4c0abf1c0af1eb0216a5", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#5b846c08462a9a3413aa4ff69a36f2a05ae90260", - "@angular/core": "github:angular/core-builds#f35cee9b24c84a77c9ace483cf335c6b58bbcc76", - "@angular/forms": "github:angular/forms-builds#e9d812b1ce0ab182f13cf457e50165e9f1601562", - "@angular/language-service": "github:angular/language-service-builds#9bc2b9ac38049bb5e6c8ccf6ef20505c78831b40", - "@angular/localize": "github:angular/localize-builds#0e13b1fcdedb5c4fdc9ee0b25097d5e80beab6da", - "@angular/material": "github:angular/material-builds#86c37a63f168cf5d8501c2456f7e70b4dd24eb9b", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#9c396c05ddc950fc894bfb73d2e7637b1a42081b", - "@angular/platform-browser": "github:angular/platform-browser-builds#8b728ec63f939b382df120bd6f920903c89935a5", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b080b3304d5008d6f0c4a195dae79055e1b04a9b", - "@angular/platform-server": "github:angular/platform-server-builds#4e6515d2b833c63bd84c6963e1f82da4c49cb0f0", - "@angular/router": "github:angular/router-builds#02191447bc1b13905964b1f9747faaa6b3ecd5ea", - "@angular/service-worker": "github:angular/service-worker-builds#cf677d645e0ffb2c99c5a8201ba3be9933441d32" + "@angular/animations": "github:angular/animations-builds#fd661469aeb0b85d3b0cf4adb963aa8cf27a97a7", + "@angular/cdk": "github:angular/cdk-builds#853371696962ab54f4ce704689a35220f7d2fd12", + "@angular/common": "github:angular/common-builds#da6b98530a1fdcc85a7aa90f8cc4639af0a07db0", + "@angular/compiler": "github:angular/compiler-builds#c9c55c36ec0b9b6b924b7ba16127b65a9ac4cf1c", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#9fc638aef8fa0788df2b79a3a63e5f41011faa8a", + "@angular/core": "github:angular/core-builds#26f0665bbe798466f30b0479fadce81833da26b3", + "@angular/forms": "github:angular/forms-builds#17197ff24d9b6877458944b292d93b3dc2e490e2", + "@angular/language-service": "github:angular/language-service-builds#8f18e3e2b43000e5637f0ba386758150ee83338b", + "@angular/localize": "github:angular/localize-builds#810a9bf283e4142015a382246fc06cc74dc9903c", + "@angular/material": "github:angular/material-builds#35042d87bf5fb0468ab1b304f6555a187490e824", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#67b2e5f896eec165e882bcdcab36bbcf176f601b", + "@angular/platform-browser": "github:angular/platform-browser-builds#74fd3bed1a9ca6278330dce1421632d7030462ec", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#5679131a338e5c169b58a8f6c36ba0109bd09687", + "@angular/platform-server": "github:angular/platform-server-builds#fc748a765ec56c9292e93263aca977761023d8a5", + "@angular/router": "github:angular/router-builds#7e14eb8a160875630e302c5dd01cd428efd9eca3", + "@angular/service-worker": "github:angular/service-worker-builds#6fd5d461431e2d268d1eb86f4a3165760cb9832e" } } From 52fbffcd7bb129720a10e6bf865e4e3a01f939d6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 26 Mar 2025 13:46:35 -0400 Subject: [PATCH 078/160] fix(@angular/build): warn and remove jsdom launcher when used with karma The jsdom package does not currently support execution of ESM scripts. Attempting to use the karma jsdom launcher will cause test failures with potentially unclear error messages after the tests have been built and have started to execute. The karma application builder test runner will now issue a warning describing the problem and remove the jsdom launcher from the `browsers` option. The warning will be shown while analyzing the options and prior to the actual start of the test process. --- .../src/builders/karma/application_builder.ts | 12 +++++++ .../angular/build/src/builders/karma/index.ts | 2 +- .../karma/tests/options/browsers_spec.ts | 33 +++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 packages/angular/build/src/builders/karma/tests/options/browsers_spec.ts diff --git a/packages/angular/build/src/builders/karma/application_builder.ts b/packages/angular/build/src/builders/karma/application_builder.ts index eb724ba00700..41d2685ed484 100644 --- a/packages/angular/build/src/builders/karma/application_builder.ts +++ b/packages/angular/build/src/builders/karma/application_builder.ts @@ -361,6 +361,7 @@ async function collectEntrypoints( return getTestEntrypoints(testFiles, { projectSourceRoot, workspaceRoot: context.workspaceRoot }); } +// eslint-disable-next-line max-lines-per-function async function initializeApplication( options: KarmaBuilderOptions, context: BuilderContext, @@ -508,6 +509,17 @@ async function initializeApplication( { promiseConfig: true, throwErrors: true }, ); + // Check for jsdom which does not support executing ESM scripts. + // If present, remove jsdom and issue a warning. + const updatedBrowsers = parsedKarmaConfig.browsers?.filter((browser) => browser !== 'jsdom'); + if (parsedKarmaConfig.browsers?.length !== updatedBrowsers?.length) { + parsedKarmaConfig.browsers = updatedBrowsers; + context.logger.warn( + `'jsdom' does not support ESM code execution and cannot be used for karma testing.` + + ` The 'jsdom' entry has been removed from the 'browsers' option.`, + ); + } + // Remove the webpack plugin/framework: // Alternative would be to make the Karma plugin "smart" but that's a tall order // with managing unneeded imports etc.. diff --git a/packages/angular/build/src/builders/karma/index.ts b/packages/angular/build/src/builders/karma/index.ts index ca7ee3ed827e..1e5f5613e3a3 100644 --- a/packages/angular/build/src/builders/karma/index.ts +++ b/packages/angular/build/src/builders/karma/index.ts @@ -68,7 +68,7 @@ function getBaseKarmaOptions( // Convert browsers from a string to an array if (typeof options.browsers === 'string' && options.browsers) { - karmaOptions.browsers = options.browsers.split(','); + karmaOptions.browsers = options.browsers.split(',').map((browser) => browser.trim()); } else if (options.browsers === false) { karmaOptions.browsers = []; } diff --git a/packages/angular/build/src/builders/karma/tests/options/browsers_spec.ts b/packages/angular/build/src/builders/karma/tests/options/browsers_spec.ts new file mode 100644 index 000000000000..d3f774e750c5 --- /dev/null +++ b/packages/angular/build/src/builders/karma/tests/options/browsers_spec.ts @@ -0,0 +1,33 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { execute } from '../../index'; +import { BASE_OPTIONS, KARMA_BUILDER_INFO, describeKarmaBuilder } from '../setup'; + +describeKarmaBuilder(execute, KARMA_BUILDER_INFO, (harness, setupTarget) => { + describe('Option: "browsers"', () => { + it('should warn if jsdom is used', async () => { + await setupTarget(harness); + + harness.useTarget('test', { + ...BASE_OPTIONS, + browsers: BASE_OPTIONS.browsers + ',jsdom', + }); + + const { result, logs } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + expect(logs).toContain( + jasmine.objectContaining({ + message: jasmine.stringMatching( + `'jsdom' does not support ESM code execution and cannot be used for karma testing.`, + ), + }), + ); + }); + }); +}); From 6e35e8db12c004a609f05245e045d875deff9c9e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 27 Mar 2025 10:03:51 +0000 Subject: [PATCH 079/160] build: update all non-major dependencies --- packages/angular/build/package.json | 2 +- .../angular_devkit/build_angular/package.json | 4 +-- .../angular_devkit/build_webpack/package.json | 2 +- pnpm-lock.yaml | 32 ++++++++++--------- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index e0afb9007137..f740a07f2536 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -53,7 +53,7 @@ "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", "less": "4.2.2", - "ng-packagr": "20.0.0-next.1", + "ng-packagr": "20.0.0-next.2", "postcss": "8.5.3", "rxjs": "7.8.2" }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index e4f034dc771a..73a411a7f080 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -58,7 +58,7 @@ "tslib": "2.8.1", "webpack": "5.98.0", "webpack-dev-middleware": "7.4.2", - "webpack-dev-server": "5.2.0", + "webpack-dev-server": "5.2.1", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, @@ -69,7 +69,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.0", "browser-sync": "3.0.3", - "ng-packagr": "20.0.0-next.1", + "ng-packagr": "20.0.0-next.2", "undici": "7.5.0" }, "peerDependencies": { diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 5f7a3b82d6f8..27074848d2c7 100644 --- a/packages/angular_devkit/build_webpack/package.json +++ b/packages/angular_devkit/build_webpack/package.json @@ -23,7 +23,7 @@ "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", "webpack": "5.98.0", - "webpack-dev-server": "5.2.0" + "webpack-dev-server": "5.2.1" }, "peerDependencies": { "webpack": "^5.30.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1f3324fba36c..75264af69623 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -436,8 +436,8 @@ importers: specifier: 4.2.2 version: 4.2.2 ng-packagr: - specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + specifier: 20.0.0-next.2 + version: 20.0.0-next.2(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) postcss: specifier: 8.5.3 version: 8.5.3 @@ -735,8 +735,8 @@ importers: specifier: 7.4.2 version: 7.4.2(webpack@5.98.0(esbuild@0.25.1)) webpack-dev-server: - specifier: 5.2.0 - version: 5.2.0(webpack@5.98.0(esbuild@0.25.1)) + specifier: 5.2.1 + version: 5.2.1(webpack@5.98.0(esbuild@0.25.1)) webpack-merge: specifier: 6.0.1 version: 6.0.1 @@ -758,8 +758,8 @@ importers: specifier: 3.0.3 version: 3.0.3 ng-packagr: - specifier: 20.0.0-next.1 - version: 20.0.0-next.1(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + specifier: 20.0.0-next.2 + version: 20.0.0-next.2(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: specifier: 7.5.0 version: 7.5.0 @@ -783,8 +783,8 @@ importers: specifier: 5.98.0 version: 5.98.0(esbuild@0.25.1) webpack-dev-server: - specifier: 5.2.0 - version: 5.2.0(webpack@5.98.0(esbuild@0.25.1)) + specifier: 5.2.1 + version: 5.2.1(webpack@5.98.0(esbuild@0.25.1)) packages/angular_devkit/core: dependencies: @@ -5934,9 +5934,9 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@20.0.0-next.1: - resolution: {integrity: sha512-6v6t7R9U3UVHx0MywijxWMiQ0OujNCPDaWK/Ih7hUfNmBAIqeF+bdlKc+BnItcHSTyaouethcSQCttxAhpmOXQ==} - engines: {node: ^18.19.1 || >=20.11.1} + ng-packagr@20.0.0-next.2: + resolution: {integrity: sha512-JVlv4DBWSRmr6sccKHsvCg9QayT0D7Fcx2LeeCk35Ppi1/kZCMTAtpsRQg3x28A9x/Bxw5CfNsDvtsWvAcbKyQ==} + engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -7711,8 +7711,8 @@ packages: webpack: optional: true - webpack-dev-server@5.2.0: - resolution: {integrity: sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==} + webpack-dev-server@5.2.1: + resolution: {integrity: sha512-ml/0HIj9NLpVKOMq+SuBPLHcmbG+TGIjXRHsYfZwocUBIqEvws8NnS/V9AFQ5FKP+tgn5adwVwRrTEpGL33QFQ==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: @@ -13729,8 +13729,9 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.1(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): + ng-packagr@20.0.0-next.2(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: + '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) '@rollup/plugin-json': 6.1.0(rollup@4.37.0) '@rollup/wasm-node': 4.37.0 @@ -15773,11 +15774,12 @@ snapshots: optionalDependencies: webpack: 5.98.0(esbuild@0.25.1) - webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.1)): + webpack-dev-server@5.2.1(webpack@5.98.0(esbuild@0.25.1)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 '@types/express': 4.17.21 + '@types/express-serve-static-core': 4.19.6 '@types/serve-index': 1.9.4 '@types/serve-static': 1.15.7 '@types/sockjs': 0.3.36 From f4061efe783f3c98cc749b8a9061ece4e4209817 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 26 Mar 2025 17:04:31 +0000 Subject: [PATCH 080/160] build: update devinfra digest to 5663ac5 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 37c4ade799fd..9fe061b8d553 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "be69a70efc9f2331083d76073427c0c81ec15a1e", + commit = "5663ac5a55be066ceb7499d4f86a0883386554af", remote = "https://github.com/angular/dev-infra.git", ) From a5ace272df8de9d876b95af06ec192fda918db85 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 26 Mar 2025 11:26:10 +0000 Subject: [PATCH 081/160] Revert "refactor: use `platformBrowser` instead of `platformBrowserTesting`" This reverts commit e5e51a22abe4c5c421ff984542fcc808b440b0fa. --- .../build/src/builders/karma/polyfills/init_test_bed.js | 6 ++---- .../build_angular/src/builders/jest/init-test-bed.mjs | 6 ++---- .../build_angular/src/builders/karma/browser_builder.ts | 4 +--- .../src/builders/web-test-runner/jasmine_runner.js | 6 ++---- 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js b/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js index 3f041d03dafa..fdbb476808c3 100644 --- a/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js +++ b/packages/angular/build/src/builders/karma/polyfills/init_test_bed.js @@ -7,12 +7,10 @@ */ import { getTestBed } from '@angular/core/testing'; -import { platformBrowser } from '@angular/platform-browser'; -import { BrowserTestingModule } from '@angular/platform-browser/testing'; +import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; -// TODO(alanagius): replace with `platformBrowserTesting` once https://github.com/angular/angular/pull/60480 is released. // Initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowser(), { +getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); diff --git a/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs b/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs index 7ab17c1b2f85..d8e8bb909194 100644 --- a/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs +++ b/packages/angular_devkit/build_angular/src/builders/jest/init-test-bed.mjs @@ -10,11 +10,9 @@ // `@angular-devkit/build-angular` rather than the user's workspace. Should look into virtual modules to support those use cases. import { getTestBed } from '@angular/core/testing'; -import { platformBrowser } from '@angular/platform-browser'; -import { BrowserTestingModule } from '@angular/platform-browser/testing'; +import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; -// TODO(alanagius): replace with `platformBrowserTesting` once https://github.com/angular/angular/pull/60480 is released. -getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowser(), { +getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); diff --git a/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts b/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts index 092b88d2de26..7ae7689402fb 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/browser_builder.ts @@ -153,12 +153,10 @@ function getBuiltInMainFile(): string { const content = Buffer.from( ` import { getTestBed } from '@angular/core/testing'; - import { platformBrowser } from '@angular/platform-browser'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; - // TODO(alanagius): replace with \`platformBrowserTesting\` once https://github.com/angular/angular/pull/60480 is released. // Initialize the Angular testing environment. - getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowser(), { + getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true }); diff --git a/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js b/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js index fa78031bb97d..035959a7844e 100644 --- a/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js +++ b/packages/angular_devkit/build_angular/src/builders/web-test-runner/jasmine_runner.js @@ -7,8 +7,7 @@ */ import { getTestBed } from '@angular/core/testing'; -import { platformBrowser } from '@angular/platform-browser'; -import { BrowserTestingModule } from '@angular/platform-browser/testing'; +import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; import { getConfig, sessionFailed, @@ -65,8 +64,7 @@ export async function runJasmineTests(jasmineEnv) { jasmine.DEFAULT_TIMEOUT_INTERVAL = config.defaultTimeoutInterval; // Initialize `TestBed` automatically for users. This assumes we already evaluated `zone.js/testing`. - // TODO(alanagius): replace with `platformBrowserTesting` once https://github.com/angular/angular/pull/60480 is released. - getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowser(), { + getTestBed().initTestEnvironment(BrowserTestingModule, platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, }); From 41d2d1784c3f16f48c0cc59991e76b733f7515e2 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Thu, 27 Mar 2025 17:30:40 +0000 Subject: [PATCH 082/160] ci: update bazel RBE setup on CI and use trusted build configuration for upstream CI runs Update to use the latest bazel/configure-remote action from dev-infra and set up trusted builds for CI runs from upstream branches. --- .bazelrc | 3 + .../windows-bazel-test/action.yml | 5 -- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 61 ++++++++++++------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 ++++++------ 8 files changed, 71 insertions(+), 52 deletions(-) diff --git a/.bazelrc b/.bazelrc index bf6560235d64..ec4ef6016357 100644 --- a/.bazelrc +++ b/.bazelrc @@ -151,6 +151,9 @@ build:remote-cache --remote_accept_cached=true build:remote-cache --remote_upload_local_results=false build:remote-cache --google_default_credentials +# Additional flags added when running a "trusted build" with additional access +build:trusted-build --remote_upload_local_results=true + ############################### # NodeJS rules settings # These settings are required for rules_nodejs diff --git a/.github/shared-actions/windows-bazel-test/action.yml b/.github/shared-actions/windows-bazel-test/action.yml index 7bdf488fc62c..b66f6d955889 100644 --- a/.github/shared-actions/windows-bazel-test/action.yml +++ b/.github/shared-actions/windows-bazel-test/action.yml @@ -16,11 +16,6 @@ inputs: runs: using: composite steps: - - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2667d139a421977a40c3ea7ec768609fb19a8b9d - with: - allow_windows_rbe: true - - name: Initialize WSL id: init_wsl uses: angular/dev-infra/github-actions/setup-wsl@9a3e28a515bf51cd2ecfd5f4d5b17613845e6f44 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 71d68f079a48..1ff7c08f5089 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@5663ac5a55be066ceb7499d4f86a0883386554af + - uses: angular/dev-infra/github-actions/branch-manager@e3c0efecadda0e0fbb616abcdf447c788959ca64 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cac5e8c428b8..aa68b20fe48d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + with: + google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -57,11 +59,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + with: + google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -81,13 +85,15 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + with: + google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -102,7 +108,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + - name: Setup Bazel RBE + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + with: + allow_windows_rbe: true + google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -123,13 +134,15 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + with: + google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -145,13 +158,15 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + with: + google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -163,13 +178,15 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + with: + google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -197,11 +214,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 6832593c9e5b..d1109cd54624 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@5663ac5a55be066ceb7499d4f86a0883386554af + - uses: angular/dev-infra/github-actions/commit-message-based-labels@e3c0efecadda0e0fbb616abcdf447c788959ca64 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@5663ac5a55be066ceb7499d4f86a0883386554af + - uses: angular/dev-infra/github-actions/post-approval-changes@e3c0efecadda0e0fbb616abcdf447c788959ca64 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 71e3b06b0187..12226a0bbb87 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@5663ac5a55be066ceb7499d4f86a0883386554af + - uses: angular/dev-infra/github-actions/feature-request@e3c0efecadda0e0fbb616abcdf447c788959ca64 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 8dcbe9a20d90..40491cbe2ad9 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index bf4055213cf1..888e6ee0045d 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/linting/licenses@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,7 +130,11 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + - name: Setup Bazel RBE + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + with: + allow_windows_rbe: true - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -149,13 +153,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -172,12 +176,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@5663ac5a55be066ceb7499d4f86a0883386554af + uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} From 2703f0ad7e1fc774b04ff94d887fba370f38ba89 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 27 Mar 2025 09:10:19 +0000 Subject: [PATCH 083/160] refactor(@angular/build): remove `Component HMR has been enabled` warning Known issues have been fixed. --- .../dev-server/tests/options/hmr_spec.ts | 83 ------------------- .../src/builders/dev-server/vite-server.ts | 9 -- 2 files changed, 92 deletions(-) delete mode 100644 packages/angular/build/src/builders/dev-server/tests/options/hmr_spec.ts diff --git a/packages/angular/build/src/builders/dev-server/tests/options/hmr_spec.ts b/packages/angular/build/src/builders/dev-server/tests/options/hmr_spec.ts deleted file mode 100644 index 4b9ba6a4c780..000000000000 --- a/packages/angular/build/src/builders/dev-server/tests/options/hmr_spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { logging } from '@angular-devkit/core'; -import { executeDevServer } from '../../index'; -import { executeOnceAndFetch } from '../execute-fetch'; -import { describeServeBuilder } from '../jasmine-helpers'; -import { BASE_OPTIONS, DEV_SERVER_BUILDER_INFO } from '../setup'; - -describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupTarget) => { - describe('option: "hmr"', () => { - beforeEach(async () => { - setupTarget(harness, {}); - }); - - it('shows message with opt out steps by default', async () => { - harness.useTarget('serve', { - ...BASE_OPTIONS, - }); - - const { result, logs } = await executeOnceAndFetch(harness, '/'); - - expect(result?.success).toBeTrue(); - expect(logs).toContain( - jasmine.objectContaining({ - message: jasmine.stringMatching('Component HMR has been enabled'), - }), - ); - expect(logs).toContain( - jasmine.objectContaining({ - message: jasmine.stringMatching('--no-hmr'), - }), - ); - }); - - it('shows message with opt out steps when explicitly enabled', async () => { - harness.useTarget('serve', { - ...BASE_OPTIONS, - hmr: true, - }); - - const { result, logs } = await executeOnceAndFetch(harness, '/'); - - expect(result?.success).toBeTrue(); - expect(logs).toContain( - jasmine.objectContaining({ - message: jasmine.stringMatching('Component HMR has been enabled'), - }), - ); - expect(logs).toContain( - jasmine.objectContaining({ - message: jasmine.stringMatching('--no-hmr'), - }), - ); - }); - - it('does not show enabled message with opt out steps when explicitly disabled', async () => { - harness.useTarget('serve', { - ...BASE_OPTIONS, - hmr: false, - }); - - const { result, logs } = await executeOnceAndFetch(harness, '/'); - - expect(result?.success).toBeTrue(); - expect(logs).not.toContain( - jasmine.objectContaining({ - message: jasmine.stringMatching('Component HMR has been enabled'), - }), - ); - expect(logs).not.toContain( - jasmine.objectContaining({ - message: jasmine.stringMatching('--no-hmr'), - }), - ); - }); - }); -}); diff --git a/packages/angular/build/src/builders/dev-server/vite-server.ts b/packages/angular/build/src/builders/dev-server/vite-server.ts index f211ae587263..b0ad41bbdb1b 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -166,15 +166,6 @@ export async function* serveWithVite( // This will also replace file-based/inline styles as code if external runtime styles are not enabled. browserOptions.templateUpdates = serverOptions.liveReload && serverOptions.hmr && useComponentTemplateHmr; - if (browserOptions.templateUpdates) { - context.logger.warn( - 'Component HMR has been enabled.\n' + - 'If you encounter application reload issues, you can manually reload the page to bypass HMR and/or disable this feature with the' + - ' `--no-hmr` command line option.\n' + - 'Please consider reporting any issues you encounter here: https://github.com/angular/angular-cli/issues\n', - ); - } - browserOptions.incrementalResults = true; // Setup the prebundling transformer that will be shared across Vite prebundling requests From a9aa317e7b288dbcc2f04b9e722534b0071d2c29 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 27 Mar 2025 10:26:05 -0400 Subject: [PATCH 084/160] refactor(@angular/cli): avoid implicit undefined array defaults for `@angular/build` builders Previously, all builder options that were of type array were set to a default empty array even if there was no explicit default defined within the schema. This can be problematic for options that have differing behavior based on their presence such as runtime calculated defaults. The implicit defaulting behavior was also not aligned with the generated schema types which resulted in additional type safety and initialization regardless. As a result, the implicit behavior was effectively redundant in most cases. Since this change could be breaking for third-party builders, the removal of this behavior is currently limited to the `@angular/build` package. --- .../angular_devkit/core/index.api.md | 4 ++++ .../testing/builder/src/builder-harness.ts | 6 +++++- .../src/builders/application/tests/setup.ts | 2 +- .../architect-base-command-module.ts | 20 +++++++++++++----- .../core/src/json/schema/transforms.ts | 21 +++++++++++++++++-- 5 files changed, 44 insertions(+), 9 deletions(-) diff --git a/goldens/public-api/angular_devkit/core/index.api.md b/goldens/public-api/angular_devkit/core/index.api.md index fe8b609ccf68..802ed4569719 100644 --- a/goldens/public-api/angular_devkit/core/index.api.md +++ b/goldens/public-api/angular_devkit/core/index.api.md @@ -18,6 +18,9 @@ import { ValidateFunction } from 'ajv'; // @public (undocumented) function addUndefinedDefaults(value: JsonValue, _pointer: JsonPointer, schema?: JsonSchema): JsonValue; +// @public (undocumented) +function addUndefinedObjectDefaults(value: JsonValue, _pointer: JsonPointer, schema?: JsonSchema): JsonValue; + // @public class AliasHost extends ResolverHost { // (undocumented) @@ -1297,6 +1300,7 @@ class TransformLogger extends Logger { declare namespace transforms { export { + addUndefinedObjectDefaults, addUndefinedDefaults } } diff --git a/modules/testing/builder/src/builder-harness.ts b/modules/testing/builder/src/builder-harness.ts index 9fdca970a277..ecee882739d8 100644 --- a/modules/testing/builder/src/builder-harness.ts +++ b/modules/testing/builder/src/builder-harness.ts @@ -104,7 +104,11 @@ export class BuilderHarness { ...builderInfo, }; - this.schemaRegistry.addPostTransform(json.schema.transforms.addUndefinedDefaults); + if (builderInfo?.builderName?.startsWith('@angular/build:')) { + this.schemaRegistry.addPostTransform(json.schema.transforms.addUndefinedObjectDefaults); + } else { + this.schemaRegistry.addPostTransform(json.schema.transforms.addUndefinedDefaults); + } } private resolvePath(path: string): string { diff --git a/packages/angular/build/src/builders/application/tests/setup.ts b/packages/angular/build/src/builders/application/tests/setup.ts index 93a5cda2a1df..ca8a54a0bf31 100644 --- a/packages/angular/build/src/builders/application/tests/setup.ts +++ b/packages/angular/build/src/builders/application/tests/setup.ts @@ -13,7 +13,7 @@ import { Schema } from '../schema'; export * from '../../../../../../../modules/testing/builder/src'; export const APPLICATION_BUILDER_INFO = Object.freeze({ - name: '@angular-devkit/build-angular:application', + name: '@angular/build:application', schemaPath: __dirname + '/../schema.json', }); diff --git a/packages/angular/cli/src/command-builder/architect-base-command-module.ts b/packages/angular/cli/src/command-builder/architect-base-command-module.ts index 9ce2230fd5ee..566e0e62b209 100644 --- a/packages/angular/cli/src/command-builder/architect-base-command-module.ts +++ b/packages/angular/cli/src/command-builder/architect-base-command-module.ts @@ -52,10 +52,16 @@ export abstract class ArchitectBaseCommandModule return this.onMissingTarget(e.message); } + const isAngularBuild = builderName.startsWith('@angular/build:'); + const { logger } = this.context; - const run = await this.getArchitect().scheduleTarget(target, options as json.JsonObject, { - logger, - }); + const run = await this.getArchitect(isAngularBuild).scheduleTarget( + target, + options as json.JsonObject, + { + logger, + }, + ); const analytics = isPackageNameSafeForAnalytics(builderName) ? await this.getAnalytics() @@ -150,13 +156,17 @@ export abstract class ArchitectBaseCommandModule } private _architect: Architect | undefined; - protected getArchitect(): Architect { + protected getArchitect(skipUndefinedArrayTransform: boolean): Architect { if (this._architect) { return this._architect; } const registry = new json.schema.CoreSchemaRegistry(); - registry.addPostTransform(json.schema.transforms.addUndefinedDefaults); + if (skipUndefinedArrayTransform) { + registry.addPostTransform(json.schema.transforms.addUndefinedObjectDefaults); + } else { + registry.addPostTransform(json.schema.transforms.addUndefinedDefaults); + } registry.useXDeprecatedProvider((msg) => this.context.logger.warn(msg)); const architectHost = this.getArchitectHost(); diff --git a/packages/angular_devkit/core/src/json/schema/transforms.ts b/packages/angular_devkit/core/src/json/schema/transforms.ts index d5052a60a966..1c97b7d1e9cc 100644 --- a/packages/angular_devkit/core/src/json/schema/transforms.ts +++ b/packages/angular_devkit/core/src/json/schema/transforms.ts @@ -11,10 +11,27 @@ import { JsonPointer } from './interface'; import { JsonSchema } from './schema'; import { getTypesOfSchema } from './utility'; +export function addUndefinedObjectDefaults( + value: JsonValue, + _pointer: JsonPointer, + schema?: JsonSchema, +): JsonValue { + return transformUndefined(value, _pointer, schema, true); +} + export function addUndefinedDefaults( value: JsonValue, _pointer: JsonPointer, schema?: JsonSchema, +): JsonValue { + return transformUndefined(value, _pointer, schema, false); +} + +function transformUndefined( + value: JsonValue, + _pointer: JsonPointer, + schema?: JsonSchema, + onlyObjects?: boolean, ): JsonValue { if (typeof schema === 'boolean' || schema === undefined) { return value; @@ -45,7 +62,7 @@ export function addUndefinedDefaults( return value; } - if (type === 'array') { + if (!onlyObjects && type === 'array') { return value == undefined ? [] : value; } @@ -94,7 +111,7 @@ export function addUndefinedDefaults( }); if (adjustedSchema && isJsonObject(adjustedSchema)) { - newValue[propName] = addUndefinedDefaults(value, _pointer, adjustedSchema); + newValue[propName] = transformUndefined(value, _pointer, adjustedSchema, onlyObjects); } } } From 088a4cb060b8bcf4c91f75a145d466018bac7d5d Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 30 Mar 2025 20:02:49 +0000 Subject: [PATCH 085/160] build: update all non-major dependencies --- package.json | 10 +- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 6 +- pnpm-lock.yaml | 771 +++++++++--------- 4 files changed, 387 insertions(+), 404 deletions(-) diff --git a/package.json b/package.json index f08fed44db8d..f0804d8f7f2e 100644 --- a/package.json +++ b/package.json @@ -100,8 +100,8 @@ "ansi-colors": "4.1.3", "beasties": "0.2.0", "buffer": "6.0.3", - "esbuild": "0.25.1", - "esbuild-wasm": "0.25.1", + "esbuild": "0.25.2", + "esbuild-wasm": "0.25.2", "eslint": "9.23.0", "eslint-config-prettier": "10.1.1", "eslint-plugin-header": "3.1.1", @@ -129,7 +129,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.0.171", - "rollup": "4.37.0", + "rollup": "4.38.0", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "semver": "7.7.1", @@ -140,9 +140,9 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.8.2", - "undici": "7.5.0", + "undici": "7.6.0", "unenv": "^1.10.0", - "verdaccio": "6.1.0", + "verdaccio": "6.1.1", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "21.1.1", "zone.js": "^0.15.0" diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index f740a07f2536..c27180fa01d1 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -28,7 +28,7 @@ "@vitejs/plugin-basic-ssl": "2.0.0", "beasties": "0.2.0", "browserslist": "^4.23.0", - "esbuild": "0.25.1", + "esbuild": "0.25.2", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -38,7 +38,7 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.9.2", - "rollup": "4.37.0", + "rollup": "4.38.0", "sass": "1.86.0", "semver": "7.7.1", "source-map-support": "0.5.21", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 73a411a7f080..02a65bfefa7f 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -29,7 +29,7 @@ "browserslist": "^4.21.5", "copy-webpack-plugin": "13.0.0", "css-loader": "7.1.2", - "esbuild-wasm": "0.25.1", + "esbuild-wasm": "0.25.2", "fast-glob": "3.3.3", "http-proxy-middleware": "3.0.3", "istanbul-lib-instrument": "6.0.3", @@ -63,14 +63,14 @@ "webpack-subresource-integrity": "5.1.0" }, "optionalDependencies": { - "esbuild": "0.25.1" + "esbuild": "0.25.2" }, "devDependencies": { "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.0", "browser-sync": "3.0.3", "ng-packagr": "20.0.0-next.2", - "undici": "7.5.0" + "undici": "7.6.0" }, "peerDependencies": { "@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 75264af69623..623278178967 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -73,16 +73,16 @@ importers: version: 9.23.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.37.0) + version: 5.1.1(rollup@4.38.0) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.3(rollup@4.37.0) + version: 28.0.3(rollup@4.38.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.37.0) + version: 6.1.0(rollup@4.38.0) '@rollup/plugin-node-resolve': specifier: ^13.0.5 - version: 13.3.0(rollup@4.37.0) + version: 13.3.0(rollup@4.38.0) '@stylistic/eslint-plugin': specifier: ^4.0.0 version: 4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) @@ -177,11 +177,11 @@ importers: specifier: 6.0.3 version: 6.0.3 esbuild: - specifier: 0.25.1 - version: 0.25.1 + specifier: 0.25.2 + version: 0.25.2 esbuild-wasm: - specifier: 0.25.1 - version: 0.25.1 + specifier: 0.25.2 + version: 0.25.2 eslint: specifier: 9.23.0 version: 9.23.0(jiti@1.21.7) @@ -264,14 +264,14 @@ importers: specifier: 23.0.171 version: 23.0.171(encoding@0.1.13) rollup: - specifier: 4.37.0 - version: 4.37.0 + specifier: 4.38.0 + version: 4.38.0 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@20.17.27)(rollup@4.37.0) + version: 0.6.3(@types/node@20.17.27)(rollup@4.38.0) semver: specifier: 7.7.1 version: 7.7.1 @@ -297,14 +297,14 @@ importers: specifier: 5.8.2 version: 5.8.2 undici: - specifier: 7.5.0 - version: 7.5.0 + specifier: 7.6.0 + version: 7.6.0 unenv: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.1.0 - version: 6.1.0(encoding@0.1.13) + specifier: 6.1.1 + version: 6.1.1(encoding@0.1.13) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.2.2 @@ -371,8 +371,8 @@ importers: specifier: ^4.23.0 version: 4.24.4 esbuild: - specifier: 0.25.1 - version: 0.25.1 + specifier: 0.25.2 + version: 0.25.2 https-proxy-agent: specifier: 7.0.6 version: 7.0.6(supports-color@10.0.0) @@ -401,8 +401,8 @@ importers: specifier: 4.9.2 version: 4.9.2 rollup: - specifier: 4.37.0 - version: 4.37.0 + specifier: 4.38.0 + version: 4.38.0 sass: specifier: 1.86.0 version: 1.86.0 @@ -637,19 +637,19 @@ importers: version: 10.4.21(postcss@8.5.3) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.1)) + version: 10.0.0(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.2)) browserslist: specifier: ^4.21.5 version: 4.24.4 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.98.0(esbuild@0.25.1)) + version: 13.0.0(webpack@5.98.0(esbuild@0.25.2)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.98.0(esbuild@0.25.1)) + version: 7.1.2(webpack@5.98.0(esbuild@0.25.2)) esbuild-wasm: - specifier: 0.25.1 - version: 0.25.1 + specifier: 0.25.2 + version: 0.25.2 fast-glob: specifier: 3.3.3 version: 3.3.3 @@ -670,16 +670,16 @@ importers: version: 4.2.2 less-loader: specifier: 12.2.0 - version: 12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.1)) + version: 12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.2)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.98.0(esbuild@0.25.1)) + version: 4.0.2(webpack@5.98.0(esbuild@0.25.2)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.2 - version: 2.9.2(webpack@5.98.0(esbuild@0.25.1)) + version: 2.9.2(webpack@5.98.0(esbuild@0.25.2)) open: specifier: 10.1.0 version: 10.1.0 @@ -697,7 +697,7 @@ importers: version: 8.5.3 postcss-loader: specifier: 8.1.1 - version: 8.1.1(postcss@8.5.3)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.25.1)) + version: 8.1.1(postcss@8.5.3)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.25.2)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -709,13 +709,13 @@ importers: version: 1.86.0 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.86.0)(webpack@5.98.0(esbuild@0.25.1)) + version: 16.0.5(sass@1.86.0)(webpack@5.98.0(esbuild@0.25.2)) semver: specifier: 7.7.1 version: 7.7.1 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.98.0(esbuild@0.25.1)) + version: 5.0.0(webpack@5.98.0(esbuild@0.25.2)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -730,23 +730,23 @@ importers: version: 2.8.1 webpack: specifier: 5.98.0 - version: 5.98.0(esbuild@0.25.1) + version: 5.98.0(esbuild@0.25.2) webpack-dev-middleware: specifier: 7.4.2 - version: 7.4.2(webpack@5.98.0(esbuild@0.25.1)) + version: 7.4.2(webpack@5.98.0(esbuild@0.25.2)) webpack-dev-server: specifier: 5.2.1 - version: 5.2.1(webpack@5.98.0(esbuild@0.25.1)) + version: 5.2.1(webpack@5.98.0(esbuild@0.25.2)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.98.0(esbuild@0.25.1)) + version: 5.1.0(webpack@5.98.0(esbuild@0.25.2)) optionalDependencies: esbuild: - specifier: 0.25.1 - version: 0.25.1 + specifier: 0.25.2 + version: 0.25.2 devDependencies: '@angular/ssr': specifier: workspace:* @@ -761,8 +761,8 @@ importers: specifier: 20.0.0-next.2 version: 20.0.0-next.2(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: - specifier: 7.5.0 - version: 7.5.0 + specifier: 7.6.0 + version: 7.6.0 packages/angular_devkit/build_webpack: dependencies: @@ -781,10 +781,10 @@ importers: version: link:../../ngtools/webpack webpack: specifier: 5.98.0 - version: 5.98.0(esbuild@0.25.1) + version: 5.98.0(esbuild@0.25.2) webpack-dev-server: specifier: 5.2.1 - version: 5.2.1(webpack@5.98.0(esbuild@0.25.1)) + version: 5.2.1(webpack@5.98.0(esbuild@0.25.2)) packages/angular_devkit/core: dependencies: @@ -866,7 +866,7 @@ importers: version: 5.8.2 webpack: specifier: 5.98.0 - version: 5.98.0(esbuild@0.25.1) + version: 5.98.0(esbuild@0.25.2) packages/schematics/angular: dependencies: @@ -1543,152 +1543,152 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@esbuild/aix-ppc64@0.25.1': - resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + '@esbuild/aix-ppc64@0.25.2': + resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.1': - resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + '@esbuild/android-arm64@0.25.2': + resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.1': - resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + '@esbuild/android-arm@0.25.2': + resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.1': - resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + '@esbuild/android-x64@0.25.2': + resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.1': - resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + '@esbuild/darwin-arm64@0.25.2': + resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.1': - resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + '@esbuild/darwin-x64@0.25.2': + resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.1': - resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + '@esbuild/freebsd-arm64@0.25.2': + resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.1': - resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + '@esbuild/freebsd-x64@0.25.2': + resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.1': - resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + '@esbuild/linux-arm64@0.25.2': + resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.1': - resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + '@esbuild/linux-arm@0.25.2': + resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.1': - resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + '@esbuild/linux-ia32@0.25.2': + resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.1': - resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + '@esbuild/linux-loong64@0.25.2': + resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.1': - resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + '@esbuild/linux-mips64el@0.25.2': + resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.1': - resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + '@esbuild/linux-ppc64@0.25.2': + resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.1': - resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + '@esbuild/linux-riscv64@0.25.2': + resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.1': - resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + '@esbuild/linux-s390x@0.25.2': + resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.1': - resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + '@esbuild/linux-x64@0.25.2': + resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.1': - resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + '@esbuild/netbsd-arm64@0.25.2': + resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.1': - resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + '@esbuild/netbsd-x64@0.25.2': + resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.1': - resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + '@esbuild/openbsd-arm64@0.25.2': + resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.1': - resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + '@esbuild/openbsd-x64@0.25.2': + resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.25.1': - resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + '@esbuild/sunos-x64@0.25.2': + resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.1': - resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + '@esbuild/win32-arm64@0.25.2': + resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.1': - resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + '@esbuild/win32-ia32@0.25.2': + resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.1': - resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + '@esbuild/win32-x64@0.25.2': + resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2449,103 +2449,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.37.0': - resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} + '@rollup/rollup-android-arm-eabi@4.38.0': + resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.37.0': - resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} + '@rollup/rollup-android-arm64@4.38.0': + resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.37.0': - resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} + '@rollup/rollup-darwin-arm64@4.38.0': + resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.37.0': - resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} + '@rollup/rollup-darwin-x64@4.38.0': + resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.37.0': - resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} + '@rollup/rollup-freebsd-arm64@4.38.0': + resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.37.0': - resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} + '@rollup/rollup-freebsd-x64@4.38.0': + resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.37.0': - resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} + '@rollup/rollup-linux-arm-gnueabihf@4.38.0': + resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.37.0': - resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} + '@rollup/rollup-linux-arm-musleabihf@4.38.0': + resolution: {integrity: sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.37.0': - resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} + '@rollup/rollup-linux-arm64-gnu@4.38.0': + resolution: {integrity: sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.37.0': - resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} + '@rollup/rollup-linux-arm64-musl@4.38.0': + resolution: {integrity: sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.37.0': - resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} + '@rollup/rollup-linux-loongarch64-gnu@4.38.0': + resolution: {integrity: sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': - resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': + resolution: {integrity: sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.37.0': - resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} + '@rollup/rollup-linux-riscv64-gnu@4.38.0': + resolution: {integrity: sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.37.0': - resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} + '@rollup/rollup-linux-riscv64-musl@4.38.0': + resolution: {integrity: sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.37.0': - resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} + '@rollup/rollup-linux-s390x-gnu@4.38.0': + resolution: {integrity: sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.37.0': - resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} + '@rollup/rollup-linux-x64-gnu@4.38.0': + resolution: {integrity: sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.37.0': - resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} + '@rollup/rollup-linux-x64-musl@4.38.0': + resolution: {integrity: sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.37.0': - resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} + '@rollup/rollup-win32-arm64-msvc@4.38.0': + resolution: {integrity: sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.37.0': - resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} + '@rollup/rollup-win32-ia32-msvc@4.38.0': + resolution: {integrity: sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.37.0': - resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} + '@rollup/rollup-win32-x64-msvc@4.38.0': + resolution: {integrity: sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==} cpu: [x64] os: [win32] @@ -2978,20 +2978,20 @@ packages: resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@verdaccio/auth@8.0.0-next-8.13': - resolution: {integrity: sha512-ur6wFC9kspp1JfuQAGOo0p508UbEp9tc92tNcUpZR80MX0Be4ba8IjtGCzVj1kpybxTayAoSAzx4+g5ltlDimQ==} + '@verdaccio/auth@8.0.0-next-8.14': + resolution: {integrity: sha512-OOuPVsfo1Y+/84pxS1KMSTtf5sc67PfNByzhBwC8cX4E1WiArHuP+rKfEqqCLu4NaN1BVNW4HiqCbZ1GzDyWtQ==} engines: {node: '>=18'} '@verdaccio/commons-api@10.2.0': resolution: {integrity: sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==} engines: {node: '>=8'} - '@verdaccio/config@8.0.0-next-8.13': - resolution: {integrity: sha512-/vH79u0AEQyvTlpBUqxW8bPSL19Samv8I3Vq5ZL07QsW2uSt6faOSDAY2ag/a1zsyuvD55u/QvrSNW6El9Xr5w==} + '@verdaccio/config@8.0.0-next-8.14': + resolution: {integrity: sha512-5YOiYfh9a0q+9ARU4NYnfl1YJunNKfyz1x2ONEhvmHkP11E782ep7ZtrJhgg/ZJTtOmjbCspgw6FN3WBe3WlLQ==} engines: {node: '>=18'} - '@verdaccio/core@8.0.0-next-8.13': - resolution: {integrity: sha512-PIcaPvRVjFN4lxBE/uYIk+qAE7uauoI8+Zj2zv7unrAo38PRo395NRmiG3PAO2L9g7x1YzdgVO+yoN8t37BTKw==} + '@verdaccio/core@8.0.0-next-8.14': + resolution: {integrity: sha512-qj4KLkaVfMzqhDFn9xqpRvJQglalmgSJig0h8BzgI/fXQWlhmC0JI2TP0cJRYEhALN3UqjDAQQHKtqa3FqlfSw==} engines: {node: '>=18'} '@verdaccio/file-locking@10.3.1': @@ -3002,55 +3002,55 @@ packages: resolution: {integrity: sha512-Sugx6XYp8nEJ9SmBoEOExEIQQ0T0q8fcyc/afWdiSNDGWviqqSx2IriCvtMwKZrE4XG0BQo6bXO+A8AOOoo7KQ==} engines: {node: '>=18'} - '@verdaccio/loaders@8.0.0-next-8.5': - resolution: {integrity: sha512-EjRl/ZPBIg/oO+fNLPMNMHy+3syaf0zG0RIaw46y48tHpi3+AnPU/0ePKevMFH63itQQeg6OW0wuJ9gvSc4psw==} + '@verdaccio/loaders@8.0.0-next-8.6': + resolution: {integrity: sha512-yuqD8uAZJcgzuNHjV6C438UNT5r2Ai9+SnUlO34AHZdWSYcluO3Zj5R3p5uf+C7YPCE31pUD27wBU74xVbUoBw==} engines: {node: '>=18'} '@verdaccio/local-storage-legacy@11.0.2': resolution: {integrity: sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==} engines: {node: '>=12'} - '@verdaccio/logger-commons@8.0.0-next-8.13': - resolution: {integrity: sha512-t9whigWbSDC/u3qEOLokXbjgwoFDTSlZqH2QUF9SRaXjJCwAwiPj+F9VjevXzlQKwcA7an0tocbKImBlJ+h2kw==} + '@verdaccio/logger-commons@8.0.0-next-8.14': + resolution: {integrity: sha512-NMRnYg2tWOOvyds5JwjWCKuGWVC5wvK/PIp0pCYQKsB8SsTnBAy1/9XL2gGBSKRkYju7CFO50Q8lRwQMn6k48A==} engines: {node: '>=18'} '@verdaccio/logger-prettify@8.0.0-next-8.2': resolution: {integrity: sha512-WMXnZPLw5W7GSIQE8UOTp6kRIwiTmnnoJbMmyMlGiNrsRaFKTqk09R5tKUgOyGgd4Lu6yncLbmdm5UjAuwHf1Q==} engines: {node: '>=18'} - '@verdaccio/logger@8.0.0-next-8.13': - resolution: {integrity: sha512-pCcJBBJgXE7OfO3Aqkj7vpmYXNyi8u6WVCeTtH4vJxEJ2tqJcu3vkw54L0MRI5xxlSNPZVaoTxPmALquBdiFvw==} + '@verdaccio/logger@8.0.0-next-8.14': + resolution: {integrity: sha512-gddIKMRKDdtbnoCr9R9Yg38gD/lsydZCaehdaTVuolVU9y8iJLZtfjwjU0i2Jko8Qloc8p0CRifSnZhT4fiOug==} engines: {node: '>=18'} - '@verdaccio/middleware@8.0.0-next-8.13': - resolution: {integrity: sha512-53gn66xkbM3C5UAUYMj+XmBJn5eeTH3YnjFjdcQlFcNqCeXqlpR+lBnEYgDxuJY5S7QQ19+sz2OavqMnNXhL4w==} + '@verdaccio/middleware@8.0.0-next-8.14': + resolution: {integrity: sha512-ieYP4TJ2jaBR23NUDwYlVJYh9rLx3Zi3NdKIc5snbNY1IVMXd4O9j+Wl3FBwibZIvHbuXRRVFk3c32irPPu0KA==} engines: {node: '>=18'} - '@verdaccio/search-indexer@8.0.0-next-8.3': - resolution: {integrity: sha512-D6ZEdhfiJYiPrKv6ejIwJo8WHu90anWYxu0RdTeEz+sjn6BY/P34y0heeEMyiU3Mq1skgNk3bEl3lzX2KZWetQ==} + '@verdaccio/search-indexer@8.0.0-next-8.4': + resolution: {integrity: sha512-Oea9m9VDqdlDPyQ9+fpcxZk0sIYH2twVK+YbykHpSYpjZRzz9hJfIr/uUwAgpWq83zAl2YDbz4zR3TjzjrWQig==} engines: {node: '>=18'} - '@verdaccio/signature@8.0.0-next-8.5': - resolution: {integrity: sha512-M2OLA2FeSPrg17lYOtUYyUUpOj/1Dl56v/mdanGPjAaZoObhREwHei290DiIie9YW/8NPlvI8SQXLM4dD8X0KA==} + '@verdaccio/signature@8.0.0-next-8.6': + resolution: {integrity: sha512-fIYC0mluIUmQBN47SYrZ1+I0UquSbAiGV5+n3ime4gyGJjDoDE28yB7BkqD869FOypFTjzzCMsxN0fuRU94UYg==} engines: {node: '>=18'} '@verdaccio/streams@10.2.1': resolution: {integrity: sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==} engines: {node: '>=12', npm: '>=5'} - '@verdaccio/tarball@13.0.0-next-8.13': - resolution: {integrity: sha512-ylbautZQIYmMh9TMhb4/GvR76k7VlRg4LcDFCbWZt7jjOMeYHQaNQGcBFTf96wSqOg0XbURRSWG1skI1DXh+tg==} + '@verdaccio/tarball@13.0.0-next-8.14': + resolution: {integrity: sha512-7da3X1L+AsswI0RPOor3sWoLU4zl611Qgnms3mOBF+Y7pNwHF1KsrkXBM5aV/sxr0+FYsrU2bDrxHKg5aCWi0w==} engines: {node: '>=18'} - '@verdaccio/ui-theme@8.0.0-next-8.13': - resolution: {integrity: sha512-eMWN3i+8AQRTUG7ATI5YQ6wirs7LNjdoYbXLaDSLHn/EmVSgJb2Fv0XWWh0dapJu/TNHcZ6/IrRXUNcScc1qqA==} + '@verdaccio/ui-theme@8.0.0-next-8.14': + resolution: {integrity: sha512-BW61qb3EGIoZrzb2AhrAqnpuim5Me7xFCR8VQPgJIya7z/zVhd+b3t4gnaOCowPnXgGrAvIyWuhVg92hnDh9pQ==} - '@verdaccio/url@13.0.0-next-8.13': - resolution: {integrity: sha512-k4TVAn/JKOSKFdksywaNtJRali4Gt5BFjFb+aTU/N01zvBvehXgkZvQrZuPgrVcvxQL9V71G5TymaDSQRVjalA==} + '@verdaccio/url@13.0.0-next-8.14': + resolution: {integrity: sha512-3DOPuaZAPSXh2tyYr0L6CSI9Gbd8qmWA5d4WtxH7yxVbRIEloiFOINBy4NaBZVtwfACANG22OtEd1mdvGjHcvA==} engines: {node: '>=18'} - '@verdaccio/utils@8.1.0-next-8.13': - resolution: {integrity: sha512-Q2DalkWPBl6vIftr1dq0V/K3GpeEUo2WEGEPJP0gAN1YdV4zyKFMUJV5EYQNz2ToBFpOZP9HWNDtXOwUagYiqA==} + '@verdaccio/utils@8.1.0-next-8.14': + resolution: {integrity: sha512-ylEpOi1JD4NJeLqSunABsnmqZOAXyS3H5s2ysHnA68TNvfV/CCZwhinRNyjxiedOzJeZhSowiWwFynBD/f6dew==} engines: {node: '>=18'} '@vitejs/plugin-basic-ssl@2.0.0': @@ -4290,13 +4290,13 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild-wasm@0.25.1: - resolution: {integrity: sha512-dZxPeDHcDIQ6ilml/NzYxnPbNkoVsHSFH3JGLSobttc5qYYgExMo8lh2XcB+w+AfiqykVDGK5PWanGB0gWaAWw==} + esbuild-wasm@0.25.2: + resolution: {integrity: sha512-vL9PSK1YFGsvrlYPDxfRxpakIDTe1wCS/JO2D45muxwtd7GR/9+fYRU+K8tKs4ZDXaEy5jr6YqrGgDL/iyufyQ==} engines: {node: '>=18'} hasBin: true - esbuild@0.25.1: - resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + esbuild@0.25.2: + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} engines: {node: '>=18'} hasBin: true @@ -4508,9 +4508,6 @@ packages: resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} engines: {node: '>=6'} - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -5513,10 +5510,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} @@ -6787,8 +6780,8 @@ packages: '@types/node': optional: true - rollup@4.37.0: - resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} + rollup@4.38.0: + resolution: {integrity: sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7499,8 +7492,8 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici@7.5.0: - resolution: {integrity: sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==} + undici@7.6.0: + resolution: {integrity: sha512-gaFsbThjrDGvAaD670r81RZro/s6H2PVZF640Qn0p5kZK+/rim7/mmyfp2W7VB5vOMaFM8vuFBJUaMlaZTYHlA==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -7604,20 +7597,20 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.13: - resolution: {integrity: sha512-hHyMYdeuk1HArwj8OWWHzCjc89Tizv894obmhbTo7Sd0pbV2sWd2eszT3NkjgTqUJTxe1lb9nyjTAKJEdmQ9DA==} + verdaccio-audit@13.0.0-next-8.14: + resolution: {integrity: sha512-btV62SbeBDtjdWsZN8RhzSE9ef89yYtdGWeRNSlYTwB/1qvQS//GhNWpUQvD83fPDUMrfo2o7tvmzIML6kOCNQ==} engines: {node: '>=18'} verdaccio-auth-memory@10.2.2: resolution: {integrity: sha512-JCAnSqwq2l1UPt0hQcPn1B3X9mYpJ5zMsDvuDdmnlWLkrIDx2Wev5fluW0HC9hcFMITFl/DJj/DyzYOOqwhFSQ==} engines: {node: '>=8'} - verdaccio-htpasswd@13.0.0-next-8.13: - resolution: {integrity: sha512-Ed8PjzSWvuQc9/026uVIqHrauorcD5o9N0JtSj1T7yHX5SmdSYl91nKA+281bCWL/q2GEnrQ7+aovgBOrzdD1g==} + verdaccio-htpasswd@13.0.0-next-8.14: + resolution: {integrity: sha512-JOXlm1g6MrZgOhzvgQfTNBmmstMJVTSiXmXbWCxSRjTzRX/v1WIdhwIWEzhn+lJUEWKv+1Z17dSSk6NiVZW/8Q==} engines: {node: '>=18'} - verdaccio@6.1.0: - resolution: {integrity: sha512-AO5J3nw8xH6qFr1tvC3T9/dExI1R6+dMaEZFCG+r78oEFiA38dwxX/q9VDyNLHgzM95HStQpoRYfQ7d42295eg==} + verdaccio@6.1.1: + resolution: {integrity: sha512-kemqW6Y/VA2Z7I8Dn3seyMzZNlnIQaP8l9mtHKriW26fxlAD2K+9esSTn8gsZej038Z7sbqpy1RFJNOZ5BPr0w==} engines: {node: '>=18'} hasBin: true @@ -8808,79 +8801,79 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@esbuild/aix-ppc64@0.25.1': + '@esbuild/aix-ppc64@0.25.2': optional: true - '@esbuild/android-arm64@0.25.1': + '@esbuild/android-arm64@0.25.2': optional: true - '@esbuild/android-arm@0.25.1': + '@esbuild/android-arm@0.25.2': optional: true - '@esbuild/android-x64@0.25.1': + '@esbuild/android-x64@0.25.2': optional: true - '@esbuild/darwin-arm64@0.25.1': + '@esbuild/darwin-arm64@0.25.2': optional: true - '@esbuild/darwin-x64@0.25.1': + '@esbuild/darwin-x64@0.25.2': optional: true - '@esbuild/freebsd-arm64@0.25.1': + '@esbuild/freebsd-arm64@0.25.2': optional: true - '@esbuild/freebsd-x64@0.25.1': + '@esbuild/freebsd-x64@0.25.2': optional: true - '@esbuild/linux-arm64@0.25.1': + '@esbuild/linux-arm64@0.25.2': optional: true - '@esbuild/linux-arm@0.25.1': + '@esbuild/linux-arm@0.25.2': optional: true - '@esbuild/linux-ia32@0.25.1': + '@esbuild/linux-ia32@0.25.2': optional: true - '@esbuild/linux-loong64@0.25.1': + '@esbuild/linux-loong64@0.25.2': optional: true - '@esbuild/linux-mips64el@0.25.1': + '@esbuild/linux-mips64el@0.25.2': optional: true - '@esbuild/linux-ppc64@0.25.1': + '@esbuild/linux-ppc64@0.25.2': optional: true - '@esbuild/linux-riscv64@0.25.1': + '@esbuild/linux-riscv64@0.25.2': optional: true - '@esbuild/linux-s390x@0.25.1': + '@esbuild/linux-s390x@0.25.2': optional: true - '@esbuild/linux-x64@0.25.1': + '@esbuild/linux-x64@0.25.2': optional: true - '@esbuild/netbsd-arm64@0.25.1': + '@esbuild/netbsd-arm64@0.25.2': optional: true - '@esbuild/netbsd-x64@0.25.1': + '@esbuild/netbsd-x64@0.25.2': optional: true - '@esbuild/openbsd-arm64@0.25.1': + '@esbuild/openbsd-arm64@0.25.2': optional: true - '@esbuild/openbsd-x64@0.25.1': + '@esbuild/openbsd-x64@0.25.2': optional: true - '@esbuild/sunos-x64@0.25.1': + '@esbuild/sunos-x64@0.25.2': optional: true - '@esbuild/win32-arm64@0.25.1': + '@esbuild/win32-arm64@0.25.2': optional: true - '@esbuild/win32-ia32@0.25.1': + '@esbuild/win32-ia32@0.25.2': optional: true - '@esbuild/win32-x64@0.25.1': + '@esbuild/win32-x64@0.25.2': optional: true '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@1.21.7))': @@ -9557,13 +9550,13 @@ snapshots: - bare-buffer - supports-color - '@rollup/plugin-alias@5.1.1(rollup@4.37.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.38.0)': optionalDependencies: - rollup: 4.37.0 + rollup: 4.38.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.37.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.38.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.37.0) + '@rollup/pluginutils': 5.1.4(rollup@4.38.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.3(picomatch@4.0.2) @@ -9571,107 +9564,107 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.37.0 + rollup: 4.38.0 - '@rollup/plugin-json@6.1.0(rollup@4.37.0)': + '@rollup/plugin-json@6.1.0(rollup@4.38.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.37.0) + '@rollup/pluginutils': 5.1.4(rollup@4.38.0) optionalDependencies: - rollup: 4.37.0 + rollup: 4.38.0 - '@rollup/plugin-node-resolve@13.3.0(rollup@4.37.0)': + '@rollup/plugin-node-resolve@13.3.0(rollup@4.38.0)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.37.0) + '@rollup/pluginutils': 3.1.0(rollup@4.38.0) '@types/resolve': 1.17.1 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.10 - rollup: 4.37.0 + rollup: 4.38.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.37.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.38.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.37.0) + '@rollup/pluginutils': 5.1.4(rollup@4.38.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.37.0 + rollup: 4.38.0 - '@rollup/pluginutils@3.1.0(rollup@4.37.0)': + '@rollup/pluginutils@3.1.0(rollup@4.38.0)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 4.37.0 + rollup: 4.38.0 - '@rollup/pluginutils@5.1.4(rollup@4.37.0)': + '@rollup/pluginutils@5.1.4(rollup@4.38.0)': dependencies: '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.37.0 + rollup: 4.38.0 - '@rollup/rollup-android-arm-eabi@4.37.0': + '@rollup/rollup-android-arm-eabi@4.38.0': optional: true - '@rollup/rollup-android-arm64@4.37.0': + '@rollup/rollup-android-arm64@4.38.0': optional: true - '@rollup/rollup-darwin-arm64@4.37.0': + '@rollup/rollup-darwin-arm64@4.38.0': optional: true - '@rollup/rollup-darwin-x64@4.37.0': + '@rollup/rollup-darwin-x64@4.38.0': optional: true - '@rollup/rollup-freebsd-arm64@4.37.0': + '@rollup/rollup-freebsd-arm64@4.38.0': optional: true - '@rollup/rollup-freebsd-x64@4.37.0': + '@rollup/rollup-freebsd-x64@4.38.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + '@rollup/rollup-linux-arm-gnueabihf@4.38.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.37.0': + '@rollup/rollup-linux-arm-musleabihf@4.38.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.37.0': + '@rollup/rollup-linux-arm64-gnu@4.38.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.37.0': + '@rollup/rollup-linux-arm64-musl@4.38.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + '@rollup/rollup-linux-loongarch64-gnu@4.38.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.37.0': + '@rollup/rollup-linux-riscv64-gnu@4.38.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.37.0': + '@rollup/rollup-linux-riscv64-musl@4.38.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.37.0': + '@rollup/rollup-linux-s390x-gnu@4.38.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.37.0': + '@rollup/rollup-linux-x64-gnu@4.38.0': optional: true - '@rollup/rollup-linux-x64-musl@4.37.0': + '@rollup/rollup-linux-x64-musl@4.38.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.37.0': + '@rollup/rollup-win32-arm64-msvc@4.38.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.37.0': + '@rollup/rollup-win32-ia32-msvc@4.38.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.37.0': + '@rollup/rollup-win32-x64-msvc@4.38.0': optional: true '@rollup/wasm-node@4.37.0': @@ -10225,16 +10218,16 @@ snapshots: '@typescript-eslint/types': 8.28.0 eslint-visitor-keys: 4.2.0 - '@verdaccio/auth@8.0.0-next-8.13': + '@verdaccio/auth@8.0.0-next-8.14': dependencies: - '@verdaccio/config': 8.0.0-next-8.13 - '@verdaccio/core': 8.0.0-next-8.13 - '@verdaccio/loaders': 8.0.0-next-8.5 - '@verdaccio/signature': 8.0.0-next-8.5 - '@verdaccio/utils': 8.1.0-next-8.13 + '@verdaccio/config': 8.0.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/loaders': 8.0.0-next-8.6 + '@verdaccio/signature': 8.0.0-next-8.6 + '@verdaccio/utils': 8.1.0-next-8.14 debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.13 + verdaccio-htpasswd: 13.0.0-next-8.14 transitivePeerDependencies: - supports-color @@ -10243,10 +10236,10 @@ snapshots: http-errors: 2.0.0 http-status-codes: 2.2.0 - '@verdaccio/config@8.0.0-next-8.13': + '@verdaccio/config@8.0.0-next-8.14': dependencies: - '@verdaccio/core': 8.0.0-next-8.13 - '@verdaccio/utils': 8.1.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/utils': 8.1.0-next-8.14 debug: 4.4.0(supports-color@10.0.0) js-yaml: 4.1.0 lodash: 4.17.21 @@ -10254,7 +10247,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/core@8.0.0-next-8.13': + '@verdaccio/core@8.0.0-next-8.14': dependencies: ajv: 8.17.1 core-js: 3.40.0 @@ -10271,7 +10264,7 @@ snapshots: dependencies: lockfile: 1.0.4 - '@verdaccio/loaders@8.0.0-next-8.5': + '@verdaccio/loaders@8.0.0-next-8.6': dependencies: debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 @@ -10291,9 +10284,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/logger-commons@8.0.0-next-8.13': + '@verdaccio/logger-commons@8.0.0-next-8.14': dependencies: - '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.14 '@verdaccio/logger-prettify': 8.0.0-next-8.2 colorette: 2.0.20 debug: 4.4.0(supports-color@10.0.0) @@ -10308,19 +10301,19 @@ snapshots: pino-abstract-transport: 1.2.0 sonic-boom: 3.8.1 - '@verdaccio/logger@8.0.0-next-8.13': + '@verdaccio/logger@8.0.0-next-8.14': dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.13 + '@verdaccio/logger-commons': 8.0.0-next-8.14 pino: 9.6.0 transitivePeerDependencies: - supports-color - '@verdaccio/middleware@8.0.0-next-8.13': + '@verdaccio/middleware@8.0.0-next-8.14': dependencies: - '@verdaccio/config': 8.0.0-next-8.13 - '@verdaccio/core': 8.0.0-next-8.13 - '@verdaccio/url': 13.0.0-next-8.13 - '@verdaccio/utils': 8.1.0-next-8.13 + '@verdaccio/config': 8.0.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/url': 13.0.0-next-8.14 + '@verdaccio/utils': 8.1.0-next-8.14 debug: 4.4.0(supports-color@10.0.0) express: 4.21.2 express-rate-limit: 5.5.1 @@ -10330,11 +10323,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/search-indexer@8.0.0-next-8.3': {} + '@verdaccio/search-indexer@8.0.0-next-8.4': {} - '@verdaccio/signature@8.0.0-next-8.5': + '@verdaccio/signature@8.0.0-next-8.6': dependencies: - '@verdaccio/config': 8.0.0-next-8.13 + '@verdaccio/config': 8.0.0-next-8.14 debug: 4.4.0(supports-color@10.0.0) jsonwebtoken: 9.0.2 transitivePeerDependencies: @@ -10342,11 +10335,11 @@ snapshots: '@verdaccio/streams@10.2.1': {} - '@verdaccio/tarball@13.0.0-next-8.13': + '@verdaccio/tarball@13.0.0-next-8.14': dependencies: - '@verdaccio/core': 8.0.0-next-8.13 - '@verdaccio/url': 13.0.0-next-8.13 - '@verdaccio/utils': 8.1.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/url': 13.0.0-next-8.14 + '@verdaccio/utils': 8.1.0-next-8.14 debug: 4.4.0(supports-color@10.0.0) gunzip-maybe: 1.4.2 lodash: 4.17.21 @@ -10354,20 +10347,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/ui-theme@8.0.0-next-8.13': {} + '@verdaccio/ui-theme@8.0.0-next-8.14': {} - '@verdaccio/url@13.0.0-next-8.13': + '@verdaccio/url@13.0.0-next-8.14': dependencies: - '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.14 debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 validator: 13.12.0 transitivePeerDependencies: - supports-color - '@verdaccio/utils@8.1.0-next-8.13': + '@verdaccio/utils@8.1.0-next-8.14': dependencies: - '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.14 lodash: 4.17.21 minimatch: 7.4.6 semver: 7.7.1 @@ -10409,11 +10402,11 @@ snapshots: '@web/dev-server-rollup@0.6.4': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.37.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.38.0) '@web/dev-server-core': 0.7.5 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.37.0 + rollup: 4.38.0 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -10858,11 +10851,11 @@ snapshots: b4a@1.6.7: {} - babel-loader@10.0.0(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.1)): + babel-loader@10.0.0(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.2)): dependencies: '@babel/core': 7.26.10 find-up: 5.0.0 - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): dependencies: @@ -11375,14 +11368,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.0(webpack@5.98.0(esbuild@0.25.1)): + copy-webpack-plugin@13.0.0(webpack@5.98.0(esbuild@0.25.2)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 tinyglobby: 0.2.12 - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) core-js-compat@3.41.0: dependencies: @@ -11436,7 +11429,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.98.0(esbuild@0.25.1)): + css-loader@7.1.2(webpack@5.98.0(esbuild@0.25.2)): dependencies: icss-utils: 5.1.0(postcss@8.5.3) postcss: 8.5.3 @@ -11447,7 +11440,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) css-select@5.1.0: dependencies: @@ -11861,35 +11854,35 @@ snapshots: dependencies: es6-promise: 4.2.8 - esbuild-wasm@0.25.1: {} + esbuild-wasm@0.25.2: {} - esbuild@0.25.1: + esbuild@0.25.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.1 - '@esbuild/android-arm': 0.25.1 - '@esbuild/android-arm64': 0.25.1 - '@esbuild/android-x64': 0.25.1 - '@esbuild/darwin-arm64': 0.25.1 - '@esbuild/darwin-x64': 0.25.1 - '@esbuild/freebsd-arm64': 0.25.1 - '@esbuild/freebsd-x64': 0.25.1 - '@esbuild/linux-arm': 0.25.1 - '@esbuild/linux-arm64': 0.25.1 - '@esbuild/linux-ia32': 0.25.1 - '@esbuild/linux-loong64': 0.25.1 - '@esbuild/linux-mips64el': 0.25.1 - '@esbuild/linux-ppc64': 0.25.1 - '@esbuild/linux-riscv64': 0.25.1 - '@esbuild/linux-s390x': 0.25.1 - '@esbuild/linux-x64': 0.25.1 - '@esbuild/netbsd-arm64': 0.25.1 - '@esbuild/netbsd-x64': 0.25.1 - '@esbuild/openbsd-arm64': 0.25.1 - '@esbuild/openbsd-x64': 0.25.1 - '@esbuild/sunos-x64': 0.25.1 - '@esbuild/win32-arm64': 0.25.1 - '@esbuild/win32-ia32': 0.25.1 - '@esbuild/win32-x64': 0.25.1 + '@esbuild/aix-ppc64': 0.25.2 + '@esbuild/android-arm': 0.25.2 + '@esbuild/android-arm64': 0.25.2 + '@esbuild/android-x64': 0.25.2 + '@esbuild/darwin-arm64': 0.25.2 + '@esbuild/darwin-x64': 0.25.2 + '@esbuild/freebsd-arm64': 0.25.2 + '@esbuild/freebsd-x64': 0.25.2 + '@esbuild/linux-arm': 0.25.2 + '@esbuild/linux-arm64': 0.25.2 + '@esbuild/linux-ia32': 0.25.2 + '@esbuild/linux-loong64': 0.25.2 + '@esbuild/linux-mips64el': 0.25.2 + '@esbuild/linux-ppc64': 0.25.2 + '@esbuild/linux-riscv64': 0.25.2 + '@esbuild/linux-s390x': 0.25.2 + '@esbuild/linux-x64': 0.25.2 + '@esbuild/netbsd-arm64': 0.25.2 + '@esbuild/netbsd-x64': 0.25.2 + '@esbuild/openbsd-arm64': 0.25.2 + '@esbuild/openbsd-x64': 0.25.2 + '@esbuild/sunos-x64': 0.25.2 + '@esbuild/win32-arm64': 0.25.2 + '@esbuild/win32-ia32': 0.25.2 + '@esbuild/win32-x64': 0.25.2 escalade@3.2.0: {} @@ -12160,8 +12153,6 @@ snapshots: fast-redact@3.5.0: {} - fast-safe-stringify@2.1.1: {} - fast-uri@3.0.6: {} fastq@1.19.1: @@ -13285,8 +13276,6 @@ snapshots: kind-of@6.0.3: {} - kleur@4.1.5: {} - koa-compose@4.1.0: {} koa-convert@2.0.0: @@ -13346,11 +13335,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.2 - less-loader@12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.1)): + less-loader@12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.2)): dependencies: less: 4.2.2 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) less@4.2.2: dependencies: @@ -13371,11 +13360,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.98.0(esbuild@0.25.1)): + license-webpack-plugin@4.0.2(webpack@5.98.0(esbuild@0.25.2)): dependencies: webpack-sources: 3.2.3 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) lie@3.3.0: dependencies: @@ -13595,11 +13584,11 @@ snapshots: mimic-function@5.0.1: {} - mini-css-extract-plugin@2.9.2(webpack@5.98.0(esbuild@0.25.1)): + mini-css-extract-plugin@2.9.2(webpack@5.98.0(esbuild@0.25.2)): dependencies: schema-utils: 4.3.0 tapable: 2.2.1 - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) minimalistic-assert@1.0.1: {} @@ -13733,7 +13722,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) - '@rollup/plugin-json': 6.1.0(rollup@4.37.0) + '@rollup/plugin-json': 6.1.0(rollup@4.38.0) '@rollup/wasm-node': 4.37.0 ajv: 8.17.1 ansi-colors: 4.1.3 @@ -13742,7 +13731,7 @@ snapshots: commander: 13.1.0 convert-source-map: 2.0.0 dependency-graph: 1.0.0 - esbuild: 0.25.1 + esbuild: 0.25.2 find-cache-dir: 3.3.2 injection-js: 2.4.0 jsonc-parser: 3.3.1 @@ -13756,7 +13745,7 @@ snapshots: tslib: 2.8.1 typescript: 5.8.2 optionalDependencies: - rollup: 4.37.0 + rollup: 4.38.0 nice-try@1.0.5: {} @@ -14212,14 +14201,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.25.1)): + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.25.2)): dependencies: cosmiconfig: 9.0.0(typescript@5.8.2) jiti: 1.21.7 postcss: 8.5.3 semver: 7.7.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) transitivePeerDependencies: - typescript @@ -14659,38 +14648,38 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.27)(rollup@4.37.0): + rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.27)(rollup@4.38.0): dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.37.0) - rollup: 4.37.0 + '@rollup/pluginutils': 3.1.0(rollup@4.38.0) + rollup: 4.38.0 source-map-resolve: 0.6.0 optionalDependencies: '@types/node': 20.17.27 - rollup@4.37.0: + rollup@4.38.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.37.0 - '@rollup/rollup-android-arm64': 4.37.0 - '@rollup/rollup-darwin-arm64': 4.37.0 - '@rollup/rollup-darwin-x64': 4.37.0 - '@rollup/rollup-freebsd-arm64': 4.37.0 - '@rollup/rollup-freebsd-x64': 4.37.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 - '@rollup/rollup-linux-arm-musleabihf': 4.37.0 - '@rollup/rollup-linux-arm64-gnu': 4.37.0 - '@rollup/rollup-linux-arm64-musl': 4.37.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 - '@rollup/rollup-linux-riscv64-gnu': 4.37.0 - '@rollup/rollup-linux-riscv64-musl': 4.37.0 - '@rollup/rollup-linux-s390x-gnu': 4.37.0 - '@rollup/rollup-linux-x64-gnu': 4.37.0 - '@rollup/rollup-linux-x64-musl': 4.37.0 - '@rollup/rollup-win32-arm64-msvc': 4.37.0 - '@rollup/rollup-win32-ia32-msvc': 4.37.0 - '@rollup/rollup-win32-x64-msvc': 4.37.0 + '@rollup/rollup-android-arm-eabi': 4.38.0 + '@rollup/rollup-android-arm64': 4.38.0 + '@rollup/rollup-darwin-arm64': 4.38.0 + '@rollup/rollup-darwin-x64': 4.38.0 + '@rollup/rollup-freebsd-arm64': 4.38.0 + '@rollup/rollup-freebsd-x64': 4.38.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.38.0 + '@rollup/rollup-linux-arm-musleabihf': 4.38.0 + '@rollup/rollup-linux-arm64-gnu': 4.38.0 + '@rollup/rollup-linux-arm64-musl': 4.38.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.38.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.38.0 + '@rollup/rollup-linux-riscv64-gnu': 4.38.0 + '@rollup/rollup-linux-riscv64-musl': 4.38.0 + '@rollup/rollup-linux-s390x-gnu': 4.38.0 + '@rollup/rollup-linux-x64-gnu': 4.38.0 + '@rollup/rollup-linux-x64-musl': 4.38.0 + '@rollup/rollup-win32-arm64-msvc': 4.38.0 + '@rollup/rollup-win32-ia32-msvc': 4.38.0 + '@rollup/rollup-win32-x64-msvc': 4.38.0 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -14732,12 +14721,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.86.0)(webpack@5.98.0(esbuild@0.25.1)): + sass-loader@16.0.5(sass@1.86.0)(webpack@5.98.0(esbuild@0.25.2)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.86.0 - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) sass@1.86.0: dependencies: @@ -15035,11 +15024,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.98.0(esbuild@0.25.1)): + source-map-loader@5.0.0(webpack@5.98.0(esbuild@0.25.2)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) source-map-resolve@0.6.0: dependencies: @@ -15321,16 +15310,16 @@ snapshots: - encoding - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.25.1)(webpack@5.98.0(esbuild@0.25.1)): + terser-webpack-plugin@5.3.14(esbuild@0.25.2)(webpack@5.98.0(esbuild@0.25.2)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) optionalDependencies: - esbuild: 0.25.1 + esbuild: 0.25.2 terser@5.39.0: dependencies: @@ -15540,7 +15529,7 @@ snapshots: undici-types@6.19.8: {} - undici@7.5.0: {} + undici@7.6.0: {} unenv@1.10.0: dependencies: @@ -15628,10 +15617,10 @@ snapshots: vary@1.1.2: {} - verdaccio-audit@13.0.0-next-8.13(encoding@0.1.13): + verdaccio-audit@13.0.0-next-8.14(encoding@0.1.13): dependencies: - '@verdaccio/config': 8.0.0-next-8.13 - '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/config': 8.0.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.14 express: 4.21.2 https-proxy-agent: 5.0.1(supports-color@10.0.0) node-fetch: 2.6.7(encoding@0.1.13) @@ -15643,9 +15632,9 @@ snapshots: dependencies: '@verdaccio/commons-api': 10.2.0 - verdaccio-htpasswd@13.0.0-next-8.13: + verdaccio-htpasswd@13.0.0-next-8.14: dependencies: - '@verdaccio/core': 8.0.0-next-8.13 + '@verdaccio/core': 8.0.0-next-8.14 '@verdaccio/file-locking': 13.0.0-next-8.3 apache-md5: 1.1.8 bcryptjs: 2.4.3 @@ -15656,23 +15645,23 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio@6.1.0(encoding@0.1.13): + verdaccio@6.1.1(encoding@0.1.13): dependencies: '@cypress/request': 3.0.8 - '@verdaccio/auth': 8.0.0-next-8.13 - '@verdaccio/config': 8.0.0-next-8.13 - '@verdaccio/core': 8.0.0-next-8.13 - '@verdaccio/loaders': 8.0.0-next-8.5 + '@verdaccio/auth': 8.0.0-next-8.14 + '@verdaccio/config': 8.0.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/loaders': 8.0.0-next-8.6 '@verdaccio/local-storage-legacy': 11.0.2 - '@verdaccio/logger': 8.0.0-next-8.13 - '@verdaccio/middleware': 8.0.0-next-8.13 - '@verdaccio/search-indexer': 8.0.0-next-8.3 - '@verdaccio/signature': 8.0.0-next-8.5 + '@verdaccio/logger': 8.0.0-next-8.14 + '@verdaccio/middleware': 8.0.0-next-8.14 + '@verdaccio/search-indexer': 8.0.0-next-8.4 + '@verdaccio/signature': 8.0.0-next-8.6 '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.13 - '@verdaccio/ui-theme': 8.0.0-next-8.13 - '@verdaccio/url': 13.0.0-next-8.13 - '@verdaccio/utils': 8.1.0-next-8.13 + '@verdaccio/tarball': 13.0.0-next-8.14 + '@verdaccio/ui-theme': 8.0.0-next-8.14 + '@verdaccio/url': 13.0.0-next-8.14 + '@verdaccio/utils': 8.1.0-next-8.14 JSONStream: 1.3.5 async: 3.2.6 clipanion: 4.0.0-rc.4 @@ -15681,21 +15670,15 @@ snapshots: debug: 4.4.0(supports-color@10.0.0) envinfo: 7.14.0 express: 4.21.2 - express-rate-limit: 5.5.1 - fast-safe-stringify: 2.1.1 handlebars: 4.7.8 - js-yaml: 4.1.0 - jsonwebtoken: 9.0.2 - kleur: 4.1.5 lodash: 4.17.21 lru-cache: 7.18.3 mime: 3.0.0 mkdirp: 1.0.4 pkginfo: 0.4.1 semver: 7.6.3 - validator: 13.12.0 - verdaccio-audit: 13.0.0-next-8.13(encoding@0.1.13) - verdaccio-htpasswd: 13.0.0-next-8.13 + verdaccio-audit: 13.0.0-next-8.14(encoding@0.1.13) + verdaccio-htpasswd: 13.0.0-next-8.14 transitivePeerDependencies: - encoding - supports-color @@ -15708,9 +15691,9 @@ snapshots: vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0): dependencies: - esbuild: 0.25.1 + esbuild: 0.25.2 postcss: 8.5.3 - rollup: 4.37.0 + rollup: 4.38.0 optionalDependencies: '@types/node': 20.17.27 fsevents: 2.3.3 @@ -15763,7 +15746,7 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.25.1)): + webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.25.2)): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -15772,9 +15755,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.0 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) - webpack-dev-server@5.2.1(webpack@5.98.0(esbuild@0.25.1)): + webpack-dev-server@5.2.1(webpack@5.98.0(esbuild@0.25.2)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -15802,10 +15785,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.1)) + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.2)) ws: 8.18.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) transitivePeerDependencies: - bufferutil - debug @@ -15820,12 +15803,12 @@ snapshots: webpack-sources@3.2.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.98.0(esbuild@0.25.1)): + webpack-subresource-integrity@5.1.0(webpack@5.98.0(esbuild@0.25.2)): dependencies: typed-assert: 1.0.9 - webpack: 5.98.0(esbuild@0.25.1) + webpack: 5.98.0(esbuild@0.25.2) - webpack@5.98.0(esbuild@0.25.1): + webpack@5.98.0(esbuild@0.25.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -15847,7 +15830,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.25.1)(webpack@5.98.0(esbuild@0.25.1)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.2)(webpack@5.98.0(esbuild@0.25.2)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: From 8a89438bef66e00d9795a5684c2b91dfdc102b3f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 31 Mar 2025 08:03:11 +0000 Subject: [PATCH 086/160] fix(@angular/build): correctly handle `false` value in server option The schema included a top-level `type`, preventing this option from functioning correctly. Closes: #29969 --- goldens/public-api/angular/build/index.api.md | 4 ++-- .../angular/build/src/builders/application/options.ts | 8 +++++--- .../angular/build/src/builders/application/schema.json | 1 - 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 3e0a2578ed12..4eba5f49ed98 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -57,8 +57,8 @@ export type ApplicationBuilderOptions = { progress?: boolean; scripts?: ScriptElement[]; security?: Security; - server?: string; - serviceWorker?: ServiceWorker_2; + server?: Serv; + serviceWorker?: Serv; sourceMap?: SourceMapUnion; ssr?: SsrUnion; statsJson?: boolean; diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 2fd1a2f5430c..d80a6312ba69 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -259,10 +259,12 @@ export async function normalizeOptions( : await getTailwindConfig(searchDirectories, workspaceRoot, context); let serverEntryPoint: string | undefined; - if (options.server) { + if (typeof options.server === 'string') { + if (options.server === '') { + throw new Error('The "server" option cannot be an empty string.'); + } + serverEntryPoint = path.join(workspaceRoot, options.server); - } else if (options.server === '') { - throw new Error('The "server" option cannot be an empty string.'); } let prerenderOptions; diff --git a/packages/angular/build/src/builders/application/schema.json b/packages/angular/build/src/builders/application/schema.json index 38232fe0ccbb..9fa9ce324698 100644 --- a/packages/angular/build/src/builders/application/schema.json +++ b/packages/angular/build/src/builders/application/schema.json @@ -17,7 +17,6 @@ "description": "The full path for the browser entry point to the application, relative to the current workspace." }, "server": { - "type": "string", "description": "The full path for the server entry point to the application, relative to the current workspace.", "oneOf": [ { From d067cedf05051e3a0f237d50306e1e4c881a0328 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 26 Mar 2025 16:47:43 -0400 Subject: [PATCH 087/160] feat(@angular/build): support custom resolution conditions with applications When using the application build system, a new `conditions` option is now available that allows adding custom package resolution conditions that can adjust the resolution for conditional exports and imports. By default the `module` and `production`/`development` conditions will be present with the later dependent on the `optimization` option. If any custom conditions value is present including an empty array, none of these defaults will be present and must be manually included if needed. The following special conditions will always be present if their respective requirements are satisfied: * es2015 (required by rxjs) * es2020 (APF backwards compatibility) * default * import * require * node * browser For additional information regarding conditional exports/imports: https://nodejs.org/api/packages.html#conditional-exports https://nodejs.org/api/packages.html#subpath-imports --- goldens/public-api/angular/build/index.api.md | 1 + .../build/src/builders/application/options.ts | 1 + .../src/builders/application/schema.json | 7 ++++++ .../tools/esbuild/application-code-bundle.ts | 24 ++++++++++++++----- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 4eba5f49ed98..062f6d92ff38 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -28,6 +28,7 @@ export type ApplicationBuilderOptions = { browser: string; budgets?: Budget[]; clearScreen?: boolean; + conditions?: string[]; crossOrigin?: CrossOrigin; define?: { [key: string]: string; diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index d80a6312ba69..49a46b3b87c9 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -498,6 +498,7 @@ export async function normalizeOptions( security, templateUpdates: !!options.templateUpdates, incrementalResults: !!options.incrementalResults, + customConditions: options.conditions, }; } diff --git a/packages/angular/build/src/builders/application/schema.json b/packages/angular/build/src/builders/application/schema.json index 9fa9ce324698..b34dabe49f7c 100644 --- a/packages/angular/build/src/builders/application/schema.json +++ b/packages/angular/build/src/builders/application/schema.json @@ -292,6 +292,13 @@ "type": "string" } }, + "conditions": { + "description": "Custom package resolution conditions used to resolve conditional exports/imports. Defaults to ['module', 'development'/'production']. The following special conditions are always present if the requirements are satisfied: 'default', 'import', 'require', 'browser', 'node'.", + "type": "array", + "items": { + "type": "string" + } + }, "fileReplacements": { "description": "Replace compilation source files with other compilation source files in the build.", "type": "array", diff --git a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts index b955ff1ebfec..7ff6a93a8382 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -546,6 +546,7 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu loaderExtensions, jsonLogs, i18nOptions, + customConditions, } = options; // Ensure unique hashes for i18n translation changes when using post-process inlining. @@ -563,18 +564,29 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu footer = { js: `/**i18n:${createHash('sha256').update(i18nHash).digest('hex')}*/` }; } + // Core conditions that are always included + const conditions = [ + // Required to support rxjs 7.x which will use es5 code if this condition is not present + 'es2015', + 'es2020', + ]; + + // Append custom conditions if present + if (customConditions) { + conditions.push(...customConditions); + } else { + // Include default conditions + conditions.push('module'); + conditions.push(optimizationOptions.scripts ? 'production' : 'development'); + } + return { absWorkingDir: workspaceRoot, format: 'esm', bundle: true, packages: 'bundle', assetNames: outputNames.media, - conditions: [ - 'es2020', - 'es2015', - 'module', - optimizationOptions.scripts ? 'production' : 'development', - ], + conditions, resolveExtensions: ['.ts', '.tsx', '.mjs', '.js', '.cjs'], metafile: true, legalComments: options.extractLicenses ? 'none' : 'eof', From 9494b1f28f05b6d6fc35b70d483ebf15c01daebb Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 28 Mar 2025 09:48:21 -0400 Subject: [PATCH 088/160] test(@angular/build): use correct builder names in integration tests The integration test setup for the dev-server was incorrectly using the name of the `@angular-devkit/build-angular` builders. While this previously had no effect, recent changes have altered the behavior of the schema validation for the `@angular/build` builders. To ensure accurate testing, the names are now correctly specified in the test setup. --- .../tests/options/conditions_spec.ts | 162 ++++++++++++++++++ .../src/builders/dev-server/tests/setup.ts | 4 +- 2 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 packages/angular/build/src/builders/application/tests/options/conditions_spec.ts diff --git a/packages/angular/build/src/builders/application/tests/options/conditions_spec.ts b/packages/angular/build/src/builders/application/tests/options/conditions_spec.ts new file mode 100644 index 000000000000..11e2cdb62ab0 --- /dev/null +++ b/packages/angular/build/src/builders/application/tests/options/conditions_spec.ts @@ -0,0 +1,162 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { + setupConditionImport, + setTargetMapping, +} from '../../../../../../../../modules/testing/builder/src/dev_prod_mode'; +import { buildApplication } from '../../index'; +import { APPLICATION_BUILDER_INFO, BASE_OPTIONS, describeBuilder } from '../setup'; + +describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { + describe('Option: "conditions"', () => { + beforeEach(async () => { + await setupConditionImport(harness); + }); + + interface ImportsTestCase { + name: string; + mapping: unknown; + output?: string; + customConditions?: string[]; + } + + const GOOD_TARGET = './src/good.js'; + const BAD_TARGET = './src/bad.js'; + + const emptyArrayCases: ImportsTestCase[] = [ + { + name: 'default fallback without matching condition', + mapping: { + 'never': BAD_TARGET, + 'default': GOOD_TARGET, + }, + }, + { + name: 'development condition', + mapping: { + 'development': BAD_TARGET, + 'default': GOOD_TARGET, + }, + }, + { + name: 'production condition', + mapping: { + 'production': BAD_TARGET, + 'default': GOOD_TARGET, + }, + }, + { + name: 'browser condition (in browser)', + mapping: { + 'browser': GOOD_TARGET, + 'default': BAD_TARGET, + }, + }, + { + name: 'browser condition (in server)', + output: 'server/main.server.mjs', + mapping: { + 'browser': BAD_TARGET, + 'default': GOOD_TARGET, + }, + }, + ]; + + for (const testCase of emptyArrayCases) { + describe('with empty array ' + testCase.name, () => { + beforeEach(async () => { + await setTargetMapping(harness, testCase.mapping); + }); + + it('resolves to expected target', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + optimization: true, + ssr: true, + server: 'src/main.ts', + conditions: [], + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + const outputFile = `dist/${testCase.output ?? 'browser/main.js'}`; + harness.expectFile(outputFile).content.toContain('"good-value"'); + harness.expectFile(outputFile).content.not.toContain('"bad-value"'); + }); + }); + } + + const customCases: ImportsTestCase[] = [ + { + name: 'default fallback without matching condition', + mapping: { + 'never': BAD_TARGET, + 'default': GOOD_TARGET, + }, + }, + { + name: 'development condition', + mapping: { + 'development': BAD_TARGET, + 'default': GOOD_TARGET, + }, + }, + { + name: 'staging condition', + mapping: { + 'staging': GOOD_TARGET, + 'production': BAD_TARGET, + 'default': BAD_TARGET, + }, + }, + { + name: 'browser condition (in browser)', + mapping: { + 'browser': GOOD_TARGET, + 'staging': BAD_TARGET, + 'default': BAD_TARGET, + }, + }, + { + name: 'browser condition (in server)', + output: 'server/main.server.mjs', + mapping: { + 'browser': BAD_TARGET, + 'default': GOOD_TARGET, + }, + }, + ]; + + for (const testCase of customCases) { + describe('with custom condition ' + testCase.name, () => { + beforeEach(async () => { + await setTargetMapping(harness, testCase.mapping); + }); + + it('resolves to expected target', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + optimization: true, + ssr: true, + server: 'src/main.ts', + conditions: ['staging'], + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + const outputFile = `dist/${testCase.output ?? 'browser/main.js'}`; + harness.expectFile(outputFile).content.toContain('"good-value"'); + harness.expectFile(outputFile).content.not.toContain('"bad-value"'); + }); + }); + } + }); +}); diff --git a/packages/angular/build/src/builders/dev-server/tests/setup.ts b/packages/angular/build/src/builders/dev-server/tests/setup.ts index da9362134b75..2c5906e9644d 100644 --- a/packages/angular/build/src/builders/dev-server/tests/setup.ts +++ b/packages/angular/build/src/builders/dev-server/tests/setup.ts @@ -22,7 +22,7 @@ export * from '../../../../../../../modules/testing/builder/src'; // TODO: Remove and use import after Vite-based dev server is moved to new package export const APPLICATION_BUILDER_INFO = Object.freeze({ - name: '@angular-devkit/build-angular:application', + name: '@angular/build:application', schemaPath: path.join( path.dirname(require.resolve('@angular/build/package.json')), 'src/builders/application/schema.json', @@ -49,7 +49,7 @@ export const APPLICATION_BASE_OPTIONS = Object.freeze({ }); export const DEV_SERVER_BUILDER_INFO = Object.freeze({ - name: '@angular-devkit/build-angular:dev-server', + name: '@angular/build:dev-server', schemaPath: __dirname + '/../schema.json', }); From 99725757ec1b375677b2034b46f54a36d6615f79 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 31 Mar 2025 07:03:38 +0000 Subject: [PATCH 089/160] build: lock file maintenance --- pnpm-lock.yaml | 618 +++++++++++++++++++++---------------------------- 1 file changed, 259 insertions(+), 359 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 623278178967..c6b7d8fccc59 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -124,7 +124,7 @@ importers: version: 4.17.16 '@types/node': specifier: ^20.17.19 - version: 20.17.27 + version: 20.17.28 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -142,7 +142,7 @@ importers: version: 1.20.6 '@types/semver': specifier: ^7.3.12 - version: 7.5.8 + version: 7.7.0 '@types/shelljs': specifier: ^0.8.11 version: 0.8.15 @@ -271,7 +271,7 @@ importers: version: 3.0.2 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@20.17.27)(rollup@4.38.0) + version: 0.6.3(@types/node@20.17.28)(rollup@4.38.0) semver: specifier: 7.7.1 version: 7.7.1 @@ -289,7 +289,7 @@ importers: version: 7.4.3 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@20.17.27)(typescript@5.8.2) + version: 10.9.2(@types/node@20.17.28)(typescript@5.8.2) tslib: specifier: 2.8.1 version: 2.8.1 @@ -360,10 +360,10 @@ importers: version: 7.26.0(@babel/core@7.26.10) '@inquirer/confirm': specifier: 5.1.8 - version: 5.1.8(@types/node@20.17.27) + version: 5.1.8(@types/node@20.17.28) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -417,7 +417,7 @@ importers: version: 0.2.12 vite: specifier: 6.2.3 - version: 6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) + version: 6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -458,10 +458,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.4.0 - version: 7.4.0(@types/node@20.17.27) + version: 7.4.0(@types/node@20.17.28) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.27)) + version: 2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.28)) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -628,7 +628,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0)) + version: 2.0.0(vite@6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -839,7 +839,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.4.0 - version: 7.4.0(@types/node@20.17.27) + version: 7.4.0(@types/node@20.17.28) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1023,10 +1023,6 @@ packages: resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.10': - resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.27.0': resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} engines: {node: '>=6.9.0'} @@ -1035,18 +1031,18 @@ packages: resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.26.9': - resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==} + '@babel/helper-create-class-features-plugin@7.27.0': + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.26.3': - resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + '@babel/helper-create-regexp-features-plugin@7.27.0': + resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1114,15 +1110,10 @@ packages: resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.10': - resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==} + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.10': - resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.27.0': resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} @@ -1206,8 +1197,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.25.9': - resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + '@babel/plugin-transform-block-scoping@7.27.0': + resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1410,8 +1401,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.25.9': - resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + '@babel/plugin-transform-regenerator@7.27.0': + resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1458,8 +1449,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.26.7': - resolution: {integrity: sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==} + '@babel/plugin-transform-typeof-symbol@7.27.0': + resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1503,16 +1494,12 @@ packages: resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} engines: {node: '>=6.9.0'} - '@babel/template@7.26.9': - resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.26.10': - resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.10': - resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} engines: {node: '>=6.9.0'} '@babel/types@7.27.0': @@ -1763,8 +1750,8 @@ packages: resolution: {integrity: sha512-a7WlM4T3g5hslSBxQpsCxlH2IGgeVVEnDP5/v51kNlKv/W5PhBMqaHanodkUjbjegsQNlWAkqLClzIwtldfSXg==} engines: {node: '>=14.0.0'} - '@grpc/grpc-js@1.13.1': - resolution: {integrity: sha512-z5nNuIs75S73ZULjPDe5QCNTiCv7FyBZXEVWOyAHtcebnuJf0g1SuueI3U1/z/KK39XyAQRUC+C9ZQJOtgHynA==} + '@grpc/grpc-js@1.13.2': + resolution: {integrity: sha512-nnR5nmL6lxF8YBqb6gWvEgLdLh/Fn+kvAdX5hUOnt48sNSb0riz/93ASd2E5gvanPA41X6Yp25bIfGRp1SMb2g==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.13': @@ -2549,8 +2536,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/wasm-node@4.37.0': - resolution: {integrity: sha512-Nzbex+bqQ2wffHfAX5nHUMhcAUwedzE02arkETjt/ybjD0ieWtXwRUgIipB7giMRqKLdopDmkSIWow0mxzWmLg==} + '@rollup/wasm-node@4.38.0': + resolution: {integrity: sha512-WgdJf6XyQ5x4qaHbjGjsqWqgg2L4WNNRsQPl80agmFX6Kdobe+FsUn116lnR7lbtiAucgI4ywGYuAoew8RHb8w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2632,8 +2619,8 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} '@types/big.js@6.2.2': resolution: {integrity: sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==} @@ -2689,18 +2676,12 @@ packages: '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - '@types/express-serve-static-core@5.0.6': - resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} @@ -2782,8 +2763,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@20.17.27': - resolution: {integrity: sha512-U58sbKhDrthHlxHRJw7ZLiLDZGmAUOZUbpw0S6nL27sYUdhvgBLCRu/keSd6qcTsfArd1sRFCCBxzWATGr/0UA==} + '@types/node@20.17.28': + resolution: {integrity: sha512-DHlH/fNL6Mho38jTy7/JT7sn2wnXI+wULR6PV4gy4VHLVvnrV/d3pHAMQHhc4gjdLmK2ZiPoMxzp6B3yRajLSQ==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -2839,8 +2820,8 @@ packages: '@types/selenium-webdriver@3.0.26': resolution: {integrity: sha512-dyIGFKXfUFiwkMfNGn1+F6b80ZjR3uSYv1j6xVJSDlft5waZ2cwkHW4e7zNzvq7hiEackcgvBpmnXZrI1GltPg==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/semver@7.7.0': + resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -2921,10 +2902,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/scope-manager@8.27.0': - resolution: {integrity: sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.28.0': resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2936,33 +2913,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/types@8.27.0': - resolution: {integrity: sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.28.0': resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.27.0': - resolution: {integrity: sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: 5.8.2 - '@typescript-eslint/typescript-estree@8.28.0': resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.8.2 - '@typescript-eslint/utils@8.27.0': - resolution: {integrity: sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: 5.8.2 - '@typescript-eslint/utils@8.28.0': resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2970,10 +2930,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/visitor-keys@8.27.0': - resolution: {integrity: sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.28.0': resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4174,8 +4130,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.123: - resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} + electron-to-chromium@1.5.128: + resolution: {integrity: sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -4852,8 +4808,8 @@ packages: hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - html-entities@2.5.3: - resolution: {integrity: sha512-D3AfvN7SjhTgBSA8L1BN4FpPzuEd06uy4lHwSoRWr0lndi9BKaNzPLKGOWZ2ocSGguozr08TTb2jhCLHaemruw==} + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -4987,8 +4943,8 @@ packages: resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} engines: {node: '>=0.10.0'} - immutable@5.0.3: - resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} + immutable@5.1.1: + resolution: {integrity: sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -7916,6 +7872,11 @@ packages: engines: {node: '>= 14'} hasBin: true + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -8051,7 +8012,7 @@ snapshots: dependencies: '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 - '@types/semver': 7.5.8 + '@types/semver': 7.7.0 '@types/supports-color': 10.0.0 '@yarnpkg/lockfile': 1.1.0 chalk: 5.4.1 @@ -8108,14 +8069,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/generator': 7.27.0 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 convert-source-map: 2.0.0 debug: 4.4.0(supports-color@10.0.0) gensync: 1.0.0-beta.2 @@ -8124,14 +8085,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.10': - dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - '@babel/generator@7.27.0': dependencies: '@babel/parser': 7.27.0 @@ -8142,9 +8095,9 @@ snapshots: '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 - '@babel/helper-compilation-targets@7.26.5': + '@babel/helper-compilation-targets@7.27.0': dependencies: '@babel/compat-data': 7.26.8 '@babel/helper-validator-option': 7.25.9 @@ -8152,7 +8105,7 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.26.10)': + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 @@ -8160,12 +8113,12 @@ snapshots: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.10)': + '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 @@ -8175,7 +8128,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 debug: 4.4.0(supports-color@10.0.0) lodash.debounce: 4.0.8 @@ -8185,15 +8138,15 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -8202,13 +8155,13 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@babel/helper-plugin-utils@7.26.5': {} @@ -8217,7 +8170,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -8226,20 +8179,20 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@babel/helper-string-parser@7.25.9': {} @@ -8249,20 +8202,16 @@ snapshots: '@babel/helper-wrap-function@7.25.9': dependencies: - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helpers@7.26.10': - dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 - - '@babel/parser@7.26.10': + '@babel/helpers@7.27.0': dependencies: - '@babel/types': 7.26.10 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 '@babel/parser@7.27.0': dependencies: @@ -8272,7 +8221,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -8299,7 +8248,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -8320,7 +8269,7 @@ snapshots: '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': @@ -8333,7 +8282,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -8351,7 +8300,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -8359,7 +8308,7 @@ snapshots: '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -8367,7 +8316,7 @@ snapshots: '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -8376,10 +8325,10 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -8388,7 +8337,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/template': 7.26.9 + '@babel/template': 7.27.0 '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': dependencies: @@ -8398,7 +8347,7 @@ snapshots: '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': @@ -8409,7 +8358,7 @@ snapshots: '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': @@ -8438,9 +8387,9 @@ snapshots: '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -8486,7 +8435,7 @@ snapshots: '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -8501,7 +8450,7 @@ snapshots: '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': @@ -8522,7 +8471,7 @@ snapshots: '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) @@ -8555,7 +8504,7 @@ snapshots: '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -8564,7 +8513,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -8574,7 +8523,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -8583,7 +8532,7 @@ snapshots: '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': @@ -8626,7 +8575,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typeof-symbol@7.26.7(@babel/core@7.26.10)': + '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -8639,26 +8588,26 @@ snapshots: '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/preset-env@7.26.9(@babel/core@7.26.10)': dependencies: '@babel/compat-data': 7.26.8 '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) @@ -8674,7 +8623,7 @@ snapshots: '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.10) '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) @@ -8708,14 +8657,14 @@ snapshots: '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.10) '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-typeof-symbol': 7.26.7(@babel/core@7.26.10) + '@babel/plugin-transform-typeof-symbol': 7.27.0(@babel/core@7.26.10) '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) @@ -8733,36 +8682,31 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 esutils: 2.0.3 '@babel/runtime@7.27.0': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.26.9': + '@babel/template@7.27.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 - '@babel/traverse@7.26.10': + '@babel/traverse@7.27.0': dependencies: '@babel/code-frame': 7.26.2 '@babel/generator': 7.27.0 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 debug: 4.4.0(supports-color@10.0.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.10': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.27.0': dependencies: '@babel/helper-string-parser': 7.25.9 @@ -8934,7 +8878,7 @@ snapshots: duplexify: 4.1.3 extend: 3.0.2 google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.0.0) - html-entities: 2.5.3 + html-entities: 2.6.0 retry-request: 7.0.2(encoding@0.1.13)(supports-color@10.0.0) teeny-request: 9.0.0(encoding@0.1.13)(supports-color@10.0.0) transitivePeerDependencies: @@ -8984,7 +8928,7 @@ snapshots: - encoding - supports-color - '@grpc/grpc-js@1.13.1': + '@grpc/grpc-js@1.13.2': dependencies: '@grpc/proto-loader': 0.7.13 '@js-sdsl/ordered-map': 4.4.2 @@ -9011,27 +8955,27 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/checkbox@4.1.4(@types/node@20.17.27)': + '@inquirer/checkbox@4.1.4(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.28) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/confirm@5.1.8(@types/node@20.17.27)': + '@inquirer/confirm@5.1.8(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/type': 3.0.5(@types/node@20.17.28) optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/core@10.1.9(@types/node@20.17.27)': + '@inquirer/core@10.1.9(@types/node@20.17.28)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.28) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -9039,97 +8983,97 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/editor@4.2.9(@types/node@20.17.27)': + '@inquirer/editor@4.2.9(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/type': 3.0.5(@types/node@20.17.28) external-editor: 3.1.0 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/expand@4.0.11(@types/node@20.17.27)': + '@inquirer/expand@4.0.11(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/type': 3.0.5(@types/node@20.17.28) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.8(@types/node@20.17.27)': + '@inquirer/input@4.1.8(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/type': 3.0.5(@types/node@20.17.28) optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/number@3.0.11(@types/node@20.17.27)': + '@inquirer/number@3.0.11(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/type': 3.0.5(@types/node@20.17.28) optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/password@4.0.11(@types/node@20.17.27)': + '@inquirer/password@4.0.11(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/type': 3.0.5(@types/node@20.17.28) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 20.17.27 - - '@inquirer/prompts@7.4.0(@types/node@20.17.27)': - dependencies: - '@inquirer/checkbox': 4.1.4(@types/node@20.17.27) - '@inquirer/confirm': 5.1.8(@types/node@20.17.27) - '@inquirer/editor': 4.2.9(@types/node@20.17.27) - '@inquirer/expand': 4.0.11(@types/node@20.17.27) - '@inquirer/input': 4.1.8(@types/node@20.17.27) - '@inquirer/number': 3.0.11(@types/node@20.17.27) - '@inquirer/password': 4.0.11(@types/node@20.17.27) - '@inquirer/rawlist': 4.0.11(@types/node@20.17.27) - '@inquirer/search': 3.0.11(@types/node@20.17.27) - '@inquirer/select': 4.1.0(@types/node@20.17.27) + '@types/node': 20.17.28 + + '@inquirer/prompts@7.4.0(@types/node@20.17.28)': + dependencies: + '@inquirer/checkbox': 4.1.4(@types/node@20.17.28) + '@inquirer/confirm': 5.1.8(@types/node@20.17.28) + '@inquirer/editor': 4.2.9(@types/node@20.17.28) + '@inquirer/expand': 4.0.11(@types/node@20.17.28) + '@inquirer/input': 4.1.8(@types/node@20.17.28) + '@inquirer/number': 3.0.11(@types/node@20.17.28) + '@inquirer/password': 4.0.11(@types/node@20.17.28) + '@inquirer/rawlist': 4.0.11(@types/node@20.17.28) + '@inquirer/search': 3.0.11(@types/node@20.17.28) + '@inquirer/select': 4.1.0(@types/node@20.17.28) optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/rawlist@4.0.11(@types/node@20.17.27)': + '@inquirer/rawlist@4.0.11(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/type': 3.0.5(@types/node@20.17.28) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/search@3.0.11(@types/node@20.17.27)': + '@inquirer/search@3.0.11(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.28) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@inquirer/select@4.1.0(@types/node@20.17.27)': + '@inquirer/select@4.1.0(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.27) + '@inquirer/core': 10.1.9(@types/node@20.17.28) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.27) + '@inquirer/type': 3.0.5(@types/node@20.17.28) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@inquirer/type@1.5.5': dependencies: mute-stream: 1.0.0 - '@inquirer/type@3.0.5(@types/node@20.17.27)': + '@inquirer/type@3.0.5(@types/node@20.17.28)': optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@isaacs/cliui@8.0.2': dependencies: @@ -9193,9 +9137,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.27))': + '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.28))': dependencies: - '@inquirer/prompts': 7.4.0(@types/node@20.17.27) + '@inquirer/prompts': 7.4.0(@types/node@20.17.28) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.2.6': @@ -9667,9 +9611,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.38.0': optional: true - '@rollup/wasm-node@4.37.0': + '@rollup/wasm-node@4.38.0': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 optionalDependencies: fsevents: 2.3.3 @@ -9711,7 +9655,7 @@ snapshots: '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) eslint: 9.23.0(jiti@1.21.7) eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -9742,46 +9686,46 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/babel__code-frame@7.0.6': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@types/big.js@6.2.2': {} '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/browser-sync@2.29.0': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/serve-static': 1.15.7 chokidar: 3.6.0 @@ -9789,19 +9733,19 @@ snapshots: '@types/co-body@6.1.3': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/qs': 6.9.18 '@types/command-line-args@5.2.3': {} '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.0.6 - '@types/node': 20.17.27 + '@types/express-serve-static-core': 4.19.6 + '@types/node': 20.17.28 '@types/connect@3.4.38': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/content-disposition@0.5.8': {} @@ -9812,17 +9756,17 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/cors@2.8.17': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/debounce@1.2.4': {} '@types/duplexify@3.6.4': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/eslint-scope@3.7.7': dependencies: @@ -9836,20 +9780,11 @@ snapshots: '@types/estree@0.0.39': {} - '@types/estree@1.0.6': {} - '@types/estree@1.0.7': {} '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 20.17.27 - '@types/qs': 6.9.18 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express-serve-static-core@5.0.6': - dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -9864,11 +9799,11 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/http-assert@1.5.6': {} @@ -9876,7 +9811,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/ini@4.1.1': {} @@ -9902,7 +9837,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -9922,13 +9857,13 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/less@3.0.8': {} '@types/loader-utils@2.0.6': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/webpack': 4.41.40 '@types/lodash@4.17.16': {} @@ -9945,14 +9880,14 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 form-data: 4.0.2 '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 - '@types/node@20.17.27': + '@types/node@20.17.28': dependencies: undici-types: 6.19.8 @@ -9960,7 +9895,7 @@ snapshots: '@types/npm-registry-fetch@8.0.7': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/node-fetch': 2.6.12 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -9968,11 +9903,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/pacote@11.1.8': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/npm-registry-fetch': 8.0.7 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -9985,12 +9920,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/pumpify@1.4.4': dependencies: '@types/duplexify': 3.6.4 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/q@0.0.32': {} @@ -10001,13 +9936,13 @@ snapshots: '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/tough-cookie': 4.0.5 form-data: 2.5.3 '@types/resolve@1.17.1': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/resolve@1.20.2': {} @@ -10017,12 +9952,12 @@ snapshots: '@types/selenium-webdriver@3.0.26': {} - '@types/semver@7.5.8': {} + '@types/semver@7.7.0': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/serve-index@1.9.4': dependencies: @@ -10031,23 +9966,23 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/send': 0.17.4 '@types/shelljs@0.8.15': dependencies: '@types/glob': 7.2.0 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/source-list-map@0.1.6': {} '@types/ssri@7.1.5': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/stack-trace@0.0.33': {} @@ -10066,17 +10001,17 @@ snapshots: '@types/watchpack@2.4.4': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/webpack-sources@3.2.3': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/source-list-map': 0.1.6 source-map: 0.7.4 '@types/webpack@4.41.40': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -10085,11 +10020,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/ws@8.18.0': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 '@types/yargs-parser@21.0.3': {} @@ -10101,7 +10036,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 optional: true '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': @@ -10133,11 +10068,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.27.0': - dependencies: - '@typescript-eslint/types': 8.27.0 - '@typescript-eslint/visitor-keys': 8.27.0 - '@typescript-eslint/scope-manager@8.28.0': dependencies: '@typescript-eslint/types': 8.28.0 @@ -10154,24 +10084,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.27.0': {} - '@typescript-eslint/types@8.28.0': {} - '@typescript-eslint/typescript-estree@8.27.0(typescript@5.8.2)': - dependencies: - '@typescript-eslint/types': 8.27.0 - '@typescript-eslint/visitor-keys': 8.27.0 - debug: 4.4.0(supports-color@10.0.0) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.2) - typescript: 5.8.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 8.28.0 @@ -10186,17 +10100,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': - dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.27.0 - '@typescript-eslint/types': 8.27.0 - '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) - eslint: 9.23.0(jiti@1.21.7) - typescript: 5.8.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) @@ -10208,11 +10111,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.27.0': - dependencies: - '@typescript-eslint/types': 8.27.0 - eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.28.0': dependencies: '@typescript-eslint/types': 8.28.0 @@ -10365,9 +10263,9 @@ snapshots: minimatch: 7.4.6 semver: 7.7.1 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1))': dependencies: - vite: 6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1) '@web/browser-logs@0.4.1': dependencies: @@ -11055,7 +10953,7 @@ snapshots: browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001707 - electron-to-chromium: 1.5.123 + electron-to-chromium: 1.5.128 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -11191,7 +11089,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -11681,7 +11579,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.123: {} + electron-to-chromium@1.5.128: {} emoji-regex@10.4.0: {} @@ -11721,7 +11619,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 20.17.27 + '@types/node': 20.17.28 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -12123,7 +12021,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.0(supports-color@10.0.0) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -12480,7 +12378,7 @@ snapshots: google-gax@4.4.1(encoding@0.1.13)(supports-color@10.0.0): dependencies: - '@grpc/grpc-js': 1.13.1 + '@grpc/grpc-js': 1.13.2 '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 @@ -12506,7 +12404,7 @@ snapshots: grpc-gcp@1.0.1(protobufjs@7.4.0): dependencies: - '@grpc/grpc-js': 1.13.1 + '@grpc/grpc-js': 1.13.2 protobufjs: 7.4.0 gtoken@7.1.0(encoding@0.1.13)(supports-color@10.0.0): @@ -12581,7 +12479,7 @@ snapshots: readable-stream: 2.3.8 wbuf: 1.7.3 - html-entities@2.5.3: {} + html-entities@2.6.0: {} html-escaper@2.0.2: {} @@ -12742,7 +12640,7 @@ snapshots: immutable@3.8.2: {} - immutable@5.0.3: {} + immutable@5.1.1: {} import-fresh@3.3.1: dependencies: @@ -13016,7 +12914,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 + '@babel/parser': 7.27.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -13026,7 +12924,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 + '@babel/parser': 7.27.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.1 @@ -13088,7 +12986,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13723,7 +13621,7 @@ snapshots: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) '@rollup/plugin-json': 6.1.0(rollup@4.38.0) - '@rollup/wasm-node': 4.37.0 + '@rollup/wasm-node': 4.38.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.4 @@ -14285,7 +14183,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.17.27 + '@types/node': 20.17.28 long: 5.3.1 protractor@7.0.0: @@ -14432,7 +14330,7 @@ snapshots: unicode-properties: 1.4.1 urijs: 1.19.11 wordwrap: 1.0.0 - yaml: 2.7.0 + yaml: 2.7.1 transitivePeerDependencies: - encoding @@ -14648,13 +14546,13 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.27)(rollup@4.38.0): + rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.28)(rollup@4.38.0): dependencies: '@rollup/pluginutils': 3.1.0(rollup@4.38.0) rollup: 4.38.0 source-map-resolve: 0.6.0 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 rollup@4.38.0: dependencies: @@ -14731,7 +14629,7 @@ snapshots: sass@1.86.0: dependencies: chokidar: 4.0.3 - immutable: 5.0.3 + immutable: 5.1.1 source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.1 @@ -15407,14 +15305,14 @@ snapshots: dependencies: typescript: 5.8.2 - ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2): + ts-node@10.9.2(@types/node@20.17.28)(typescript@5.8.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.27 + '@types/node': 20.17.28 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15689,19 +15587,19 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.3(@types/node@20.17.27)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.0): + vite@6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 rollup: 4.38.0 optionalDependencies: - '@types/node': 20.17.27 + '@types/node': 20.17.28 fsevents: 2.3.3 jiti: 1.21.7 less: 4.2.2 sass: 1.86.0 terser: 5.39.0 - yaml: 2.7.0 + yaml: 2.7.1 void-elements@2.0.1: {} @@ -15978,6 +15876,8 @@ snapshots: yaml@2.7.0: {} + yaml@2.7.1: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 From 6a5f81e49d33e059b767beaf13d943ecde9f9db1 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 31 Mar 2025 21:03:04 +0000 Subject: [PATCH 090/160] build: update devinfra digest to 78f80fa --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 9fe061b8d553..3e4f07d83515 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "5663ac5a55be066ceb7499d4f86a0883386554af", + commit = "78f80fa56155b444bf8a41d82cc16a33982ee4cf", remote = "https://github.com/angular/dev-infra.git", ) From 7a67752c967beed2940335325f351bca8f5dfe66 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 31 Mar 2025 21:03:02 +0000 Subject: [PATCH 091/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 46 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 38 +++++++-------- package.json | 2 +- pnpm-lock.yaml | 21 +++------ tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------- 9 files changed, 73 insertions(+), 80 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 1ff7c08f5089..e2b3d74374fe 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@e3c0efecadda0e0fbb616abcdf447c788959ca64 + - uses: angular/dev-infra/github-actions/branch-manager@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa68b20fe48d..0d523aa589ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -59,11 +59,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,13 +85,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -108,9 +108,9 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: allow_windows_rbe: true google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} @@ -134,13 +134,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -158,13 +158,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -178,13 +178,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -214,11 +214,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index d1109cd54624..f18efc18ee1b 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@e3c0efecadda0e0fbb616abcdf447c788959ca64 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@e3c0efecadda0e0fbb616abcdf447c788959ca64 + - uses: angular/dev-infra/github-actions/post-approval-changes@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 12226a0bbb87..3212d17f8ebf 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@e3c0efecadda0e0fbb616abcdf447c788959ca64 + - uses: angular/dev-infra/github-actions/feature-request@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 40491cbe2ad9..79c1457dc3ac 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 888e6ee0045d..451396d8d7ba 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/linting/licenses@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,9 +130,9 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf with: allow_windows_rbe: true - name: Run CLI E2E tests @@ -153,13 +153,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -176,12 +176,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e3c0efecadda0e0fbb616abcdf447c788959ca64 + uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index f0804d8f7f2e..4591f5ad3eb3 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "20.0.0-next.4", "@angular/localize": "20.0.0-next.4", "@angular/material": "20.0.0-next.4", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#6b390aeba76dbef5c925e05ca9d2ae792c6232fe", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1f3caa69331f8272286f9fd3b4599a1d64adf432", "@angular/platform-browser": "20.0.0-next.4", "@angular/platform-server": "20.0.0-next.4", "@angular/router": "20.0.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6b7d8fccc59..693b7f17ddc0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: 20.0.0-next.4 version: 20.0.0-next.4(oylo4douhe75q4m3y4wi7udlwy) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#6b390aeba76dbef5c925e05ca9d2ae792c6232fe - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6b390aeba76dbef5c925e05ca9d2ae792c6232fe(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#1f3caa69331f8272286f9fd3b4599a1d64adf432 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1f3caa69331f8272286f9fd3b4599a1d64adf432(encoding@0.1.13) '@angular/platform-browser': specifier: 20.0.0-next.4 version: 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) @@ -968,9 +968,9 @@ packages: '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6b390aeba76dbef5c925e05ca9d2ae792c6232fe': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6b390aeba76dbef5c925e05ca9d2ae792c6232fe} - version: 0.0.0-5663ac5a55be066ceb7499d4f86a0883386554af + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1f3caa69331f8272286f9fd3b4599a1d64adf432': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1f3caa69331f8272286f9fd3b4599a1d64adf432} + version: 0.0.0-78f80fa56155b444bf8a41d82cc16a33982ee4cf hasBin: true '@angular/platform-browser@20.0.0-next.4': @@ -7867,11 +7867,6 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - yaml@2.7.1: resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} engines: {node: '>= 14'} @@ -8008,7 +8003,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6b390aeba76dbef5c925e05ca9d2ae792c6232fe(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1f3caa69331f8272286f9fd3b4599a1d64adf432(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 @@ -8021,7 +8016,7 @@ snapshots: typed-graphqlify: 3.1.6 typescript: 5.8.2 which: 5.0.0 - yaml: 2.7.0 + yaml: 2.7.1 transitivePeerDependencies: - encoding @@ -15874,8 +15869,6 @@ snapshots: yallist@5.0.0: {} - yaml@2.7.0: {} - yaml@2.7.1: {} yargs-parser@18.1.3: diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 59d1d288da59..720e21fbbc7e 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#fd661469aeb0b85d3b0cf4adb963aa8cf27a97a7", - "@angular/cdk": "github:angular/cdk-builds#853371696962ab54f4ce704689a35220f7d2fd12", - "@angular/common": "github:angular/common-builds#da6b98530a1fdcc85a7aa90f8cc4639af0a07db0", - "@angular/compiler": "github:angular/compiler-builds#c9c55c36ec0b9b6b924b7ba16127b65a9ac4cf1c", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#9fc638aef8fa0788df2b79a3a63e5f41011faa8a", - "@angular/core": "github:angular/core-builds#26f0665bbe798466f30b0479fadce81833da26b3", - "@angular/forms": "github:angular/forms-builds#17197ff24d9b6877458944b292d93b3dc2e490e2", - "@angular/language-service": "github:angular/language-service-builds#8f18e3e2b43000e5637f0ba386758150ee83338b", - "@angular/localize": "github:angular/localize-builds#810a9bf283e4142015a382246fc06cc74dc9903c", - "@angular/material": "github:angular/material-builds#35042d87bf5fb0468ab1b304f6555a187490e824", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#67b2e5f896eec165e882bcdcab36bbcf176f601b", - "@angular/platform-browser": "github:angular/platform-browser-builds#74fd3bed1a9ca6278330dce1421632d7030462ec", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#5679131a338e5c169b58a8f6c36ba0109bd09687", - "@angular/platform-server": "github:angular/platform-server-builds#fc748a765ec56c9292e93263aca977761023d8a5", - "@angular/router": "github:angular/router-builds#7e14eb8a160875630e302c5dd01cd428efd9eca3", - "@angular/service-worker": "github:angular/service-worker-builds#6fd5d461431e2d268d1eb86f4a3165760cb9832e" + "@angular/animations": "github:angular/animations-builds#ee90ee76ad2dddf73db6fc481552647e81b1461b", + "@angular/cdk": "github:angular/cdk-builds#bcac18115bc4293b61ac64a167d856919ab9ce05", + "@angular/common": "github:angular/common-builds#90fb2b8fd651f018c5b71ef6bb94561a5212e11f", + "@angular/compiler": "github:angular/compiler-builds#ca371245dc31d1e0a485c0327d8eced3ae98ca10", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#001b95d1818c8e708f63e3ec79d57c4f1f4780e6", + "@angular/core": "github:angular/core-builds#1997abe8ec0701afc0c29677c1af255affa3af99", + "@angular/forms": "github:angular/forms-builds#02bb3261483f1f3c7f0431f7c3de1fdecb93c5bc", + "@angular/language-service": "github:angular/language-service-builds#650657f38c6000befe5210e782e6a8095a1d634e", + "@angular/localize": "github:angular/localize-builds#30e59b94247953582aeeac3ed530f134097c3a36", + "@angular/material": "github:angular/material-builds#bdda90e6143ee02eab9152b3bc0898fcedec4e77", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#c39b60dc80de6baadadbb1f216fa339086c87723", + "@angular/platform-browser": "github:angular/platform-browser-builds#83b93fd859b2d2ba28b35bd7be5f0e420918ad00", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#7dfbc2a3e9f942168dbfc246818e8e3b1b3b9baa", + "@angular/platform-server": "github:angular/platform-server-builds#fc57e503f67e141896a8d495bef730c43a9f64a0", + "@angular/router": "github:angular/router-builds#0e134f3180a900d554f02dd2a2bcc2fb73de0592", + "@angular/service-worker": "github:angular/service-worker-builds#06b7c99e128c974fc6024d1f04c3e01912e94523" } } From cccd35e6f31906870e0761136884cb715c9afca8 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:22:45 +0000 Subject: [PATCH 092/160] refactor: remove dependency on `symbol-observable` --- eslint.config.mjs | 8 -------- package.json | 1 - packages/angular/cli/BUILD.bazel | 1 - packages/angular/cli/lib/init.ts | 2 -- packages/angular/cli/package.json | 1 - .../angular_devkit/architect_cli/package.json | 1 - .../angular_devkit/schematics_cli/BUILD.bazel | 1 - .../schematics_cli/bin/schematics.ts | 2 -- .../angular_devkit/schematics_cli/package.json | 1 - pnpm-lock.yaml | 18 ------------------ 10 files changed, 36 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index dd6ed8fbae63..eeb7f6c60cd2 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -121,14 +121,6 @@ export default [ 'import/newline-after-import': 'error', 'import/no-absolute-path': 'error', 'import/no-duplicates': 'error', - - 'import/no-unassigned-import': [ - 'error', - { - allow: ['symbol-observable'], - }, - ], - 'import/order': [ 'error', { diff --git a/package.json b/package.json index 4591f5ad3eb3..67afdbd08d50 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,6 @@ "semver": "7.7.1", "shelljs": "^0.9.0", "source-map-support": "0.5.21", - "symbol-observable": "4.0.0", "tar": "^7.0.0", "ts-node": "^10.9.1", "tslib": "2.8.1", diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index 030b92e1dbec..966b2d190356 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -69,7 +69,6 @@ ts_project( "//:node_modules/@types/yarnpkg__lockfile", "//:node_modules/listr2", "//:node_modules/semver", - "//:node_modules/symbol-observable", ], ) diff --git a/packages/angular/cli/lib/init.ts b/packages/angular/cli/lib/init.ts index 1bcd8fdca3b9..cd324b6df69b 100644 --- a/packages/angular/cli/lib/init.ts +++ b/packages/angular/cli/lib/init.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import 'symbol-observable'; -// symbol polyfill must go first import { readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; import * as path from 'node:path'; diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index a5b548b7da34..569e1b0806af 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -37,7 +37,6 @@ "pacote": "20.0.0", "resolve": "1.22.10", "semver": "7.7.1", - "symbol-observable": "4.0.0", "yargs": "17.7.2" }, "ng-update": { diff --git a/packages/angular_devkit/architect_cli/package.json b/packages/angular_devkit/architect_cli/package.json index c7ae69c92df6..1f368de6a504 100644 --- a/packages/angular_devkit/architect_cli/package.json +++ b/packages/angular_devkit/architect_cli/package.json @@ -18,7 +18,6 @@ "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "ansi-colors": "4.1.3", "progress": "2.0.3", - "symbol-observable": "4.0.0", "yargs-parser": "21.1.1" }, "devDependencies": { diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index fae06e0afb2a..26c63aff940d 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -52,7 +52,6 @@ ts_project( "//:node_modules/@types/node", "//:node_modules/@types/yargs-parser", "//:node_modules/ansi-colors", - "//:node_modules/symbol-observable", "//:node_modules/yargs-parser", ], ) diff --git a/packages/angular_devkit/schematics_cli/bin/schematics.ts b/packages/angular_devkit/schematics_cli/bin/schematics.ts index 5dab4733c13f..93e1ddbf9181 100644 --- a/packages/angular_devkit/schematics_cli/bin/schematics.ts +++ b/packages/angular_devkit/schematics_cli/bin/schematics.ts @@ -7,8 +7,6 @@ * found in the LICENSE file at https://angular.dev/license */ -// symbol polyfill must go first -import 'symbol-observable'; import { JsonValue, logging, schema } from '@angular-devkit/core'; import { ProcessOutput, createConsoleLogger } from '@angular-devkit/core/node'; import { UnsuccessfulWorkflowExecution } from '@angular-devkit/schematics'; diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index 480618ddb5ad..551ea58ccf1b 100644 --- a/packages/angular_devkit/schematics_cli/package.json +++ b/packages/angular_devkit/schematics_cli/package.json @@ -20,7 +20,6 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.4.0", "ansi-colors": "4.1.3", - "symbol-observable": "4.0.0", "yargs-parser": "21.1.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 693b7f17ddc0..06d228e663ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -281,9 +281,6 @@ importers: source-map-support: specifier: 0.5.21 version: 0.5.21 - symbol-observable: - specifier: 4.0.0 - version: 4.0.0 tar: specifier: ^7.0.0 version: 7.4.3 @@ -492,9 +489,6 @@ importers: semver: specifier: 7.7.1 version: 7.7.1 - symbol-observable: - specifier: 4.0.0 - version: 4.0.0 yargs: specifier: 17.7.2 version: 17.7.2 @@ -565,9 +559,6 @@ importers: progress: specifier: 2.0.3 version: 2.0.3 - symbol-observable: - specifier: 4.0.0 - version: 4.0.0 yargs-parser: specifier: 21.1.1 version: 21.1.1 @@ -843,9 +834,6 @@ importers: ansi-colors: specifier: 4.1.3 version: 4.1.3 - symbol-observable: - specifier: 4.0.0 - version: 4.0.0 yargs-parser: specifier: 21.1.1 version: 21.1.1 @@ -7191,10 +7179,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - symbol-observable@4.0.0: - resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} - engines: {node: '>=0.10'} - table-layout@4.1.1: resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==} engines: {node: '>=12.17'} @@ -15134,8 +15118,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - symbol-observable@4.0.0: {} - table-layout@4.1.1: dependencies: array-back: 6.2.2 From 441ba9a515f7470695e20bd1fb84d323804db011 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 31 Mar 2025 19:11:31 -0400 Subject: [PATCH 093/160] refactor(@angular/build): remove unneeded babel import attributes syntax plugin As of babel v7.26.0, the separate `@babel/plugin-syntax-import-attributes` package is no longer needed. The ability to parse import attributes is included by default. --- packages/angular/build/BUILD.bazel | 1 - packages/angular/build/package.json | 1 - .../build/src/tools/esbuild/javascript-transformer-worker.ts | 4 +--- pnpm-lock.yaml | 3 --- 4 files changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index b337cd6a9e5b..3bc5b23802b8 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -81,7 +81,6 @@ ts_project( ":node_modules/@babel/core", ":node_modules/@babel/helper-annotate-as-pure", ":node_modules/@babel/helper-split-export-declaration", - ":node_modules/@babel/plugin-syntax-import-attributes", ":node_modules/@inquirer/confirm", ":node_modules/@vitejs/plugin-basic-ssl", ":node_modules/browserslist", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index c27180fa01d1..8f119f2bcde4 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -23,7 +23,6 @@ "@babel/core": "7.26.10", "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-syntax-import-attributes": "7.26.0", "@inquirer/confirm": "5.1.8", "@vitejs/plugin-basic-ssl": "2.0.0", "beasties": "0.2.0", diff --git a/packages/angular/build/src/tools/esbuild/javascript-transformer-worker.ts b/packages/angular/build/src/tools/esbuild/javascript-transformer-worker.ts index 7bf29fc2e7a8..3d7c8d2ca126 100644 --- a/packages/angular/build/src/tools/esbuild/javascript-transformer-worker.ts +++ b/packages/angular/build/src/tools/esbuild/javascript-transformer-worker.ts @@ -61,9 +61,7 @@ async function transformWithBabel( options.sourcemap && (!!options.thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename)); - // @ts-expect-error Import attribute syntax plugin does not currently have type definitions - const { default: importAttributePlugin } = await import('@babel/plugin-syntax-import-attributes'); - const plugins: PluginItem[] = [importAttributePlugin]; + const plugins: PluginItem[] = []; if (options.instrumentForCoverage) { const { default: coveragePlugin } = await import('../babel/plugins/add-code-coverage.js'); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06d228e663ad..553c6358c4b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -352,9 +352,6 @@ importers: '@babel/helper-split-export-declaration': specifier: 7.24.7 version: 7.24.7 - '@babel/plugin-syntax-import-attributes': - specifier: 7.26.0 - version: 7.26.0(@babel/core@7.26.10) '@inquirer/confirm': specifier: 5.1.8 version: 5.1.8(@types/node@20.17.28) From 4955ee0aa31c1021b6369c29a250dd5a9a3f11cd Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:20:57 +0000 Subject: [PATCH 094/160] fix(@angular-devkit/schematics): properly resolve relative schematics when executed from a nested directory Ensure that relative schematic paths are correctly resolved when invoked from within a nested directory. Closes: #29978 --- .../tools/node-module-engine-host.ts | 10 +--- .../schematics-collections-relative.ts | 53 +++++++++++++++++++ 2 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/generate/schematics-collections-relative.ts diff --git a/packages/angular_devkit/schematics/tools/node-module-engine-host.ts b/packages/angular_devkit/schematics/tools/node-module-engine-host.ts index c24599cf345e..0bc269840c18 100644 --- a/packages/angular_devkit/schematics/tools/node-module-engine-host.ts +++ b/packages/angular_devkit/schematics/tools/node-module-engine-host.ts @@ -7,7 +7,7 @@ */ import { BaseException } from '@angular-devkit/core'; -import { dirname, join, resolve } from 'node:path'; +import { dirname, resolve } from 'node:path'; import { RuleFactory } from '../src'; import { FileSystemCollectionDesc, FileSystemSchematicDesc } from './description'; import { ExportStringRef } from './export-ref'; @@ -46,20 +46,14 @@ export class NodeModulesEngineHost extends FileSystemEngineHostBase { } } - const relativeBase = requester ? dirname(requester) : process.cwd(); let collectionPath: string | undefined = undefined; - - if (name.startsWith('.')) { - name = resolve(relativeBase, name); - } - const resolveOptions = { paths: requester ? [dirname(requester), ...(this.paths || [])] : this.paths, }; // Try to resolve as a package try { - const packageJsonPath = require.resolve(join(name, 'package.json'), resolveOptions); + const packageJsonPath = require.resolve(`${name}/package.json`, resolveOptions); const { schematics } = require(packageJsonPath); if (!schematics || typeof schematics !== 'string') { diff --git a/tests/legacy-cli/e2e/tests/generate/schematics-collections-relative.ts b/tests/legacy-cli/e2e/tests/generate/schematics-collections-relative.ts new file mode 100644 index 000000000000..f6f583bf0e72 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/generate/schematics-collections-relative.ts @@ -0,0 +1,53 @@ +import assert from 'node:assert'; +import { join } from 'node:path'; +import { ng } from '../../utils/process'; +import { writeMultipleFiles, createDir } from '../../utils/fs'; +import { updateJsonFile } from '../../utils/project'; + +export default async function () { + // setup temp collection + await createDir('./fake-schematics'); + await writeMultipleFiles({ + './fake-schematics/package.json': JSON.stringify({ + 'schematics': './collection.json', + }), + './fake-schematics/collection.json': JSON.stringify({ + 'schematics': { + 'fake': { + 'description': 'Fake schematic', + 'schema': './fake-schema.json', + 'factory': './fake', + }, + }, + }), + './fake-schematics/fake-schema.json': JSON.stringify({ + '$id': 'FakeSchema', + 'title': 'Fake Schema', + 'type': 'object', + }), + './fake-schematics/fake.js': ` + exports.default = () => (host, context) => context.logger.info('fake schematic run.'); + `, + }); + + await updateJsonFile('angular.json', (json) => { + json.cli ??= {}; + json.cli.schematicCollections = ['./fake-schematics']; + }); + + const { stdout: stdout1 } = await ng('generate', '--help'); + assert.match(stdout1, /Fake schematic/); + + const { stdout: stdout2 } = await ng('generate', 'fake'); + assert.match(stdout2, /fake schematic run/); + + // change cwd to a nested directory to validate the relative schematic is resolved correctly + const originalCwd = process.cwd(); + try { + process.chdir(join(originalCwd, 'src/app')); + const { stdout: stdout3 } = await ng('generate', 'fake'); + assert.match(stdout3, /fake schematic run/); + } finally { + process.chdir(originalCwd); + } +} From da7063f20fd60f6d575337a541373651f673db9a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 31 Mar 2025 16:41:11 -0400 Subject: [PATCH 095/160] refactor(@angular/build): provide a pre-link resolution condition for APF To support future APF changes that may include pre-linked code specific to the Angular version used to create the package, an additional package resolution condition will now be automatically added to the build process for applications. A condition in the form of `angular:linked-`, where `` is the full package version of `@angular/core`, will now be present during application builds. This change in combination with APF changes will allow matching packages to avoid the linking step during a build. Non-version matching packages will continue to function and use the existing linking transformation process. --- .../build/src/builders/application/options.ts | 22 ++++++++++++++++++- .../tools/esbuild/application-code-bundle.ts | 9 ++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 49a46b3b87c9..5db6d2c41e16 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -9,7 +9,7 @@ import type { BuilderContext } from '@angular-devkit/architect'; import type { Plugin } from 'esbuild'; import { realpathSync } from 'node:fs'; -import { access, constants } from 'node:fs/promises'; +import { access, constants, readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; import path from 'node:path'; import { normalizeAssetPatterns, normalizeOptimization, normalizeSourceMaps } from '../../utils'; @@ -499,6 +499,7 @@ export async function normalizeOptions( templateUpdates: !!options.templateUpdates, incrementalResults: !!options.incrementalResults, customConditions: options.conditions, + frameworkVersion: await findFrameworkVersion(projectRoot), }; } @@ -706,3 +707,22 @@ function normalizeExternals(value: string[] | undefined): string[] | undefined { return [...new Set(value.map((d) => (d.endsWith('/*') ? d.slice(0, -2) : d)))]; } + +async function findFrameworkVersion(projectRoot: string): Promise { + // Create a custom require function for ESM compliance. + // NOTE: The trailing slash is significant. + const projectResolve = createRequire(projectRoot + '/').resolve; + + try { + const manifestPath = projectResolve('@angular/core/package.json'); + const manifestData = await readFile(manifestPath, 'utf-8'); + const manifestObject = JSON.parse(manifestData) as { version: string }; + const version = manifestObject.version; + + return version; + } catch { + throw new Error( + 'Error: It appears that "@angular/core" is missing as a dependency. Please ensure it is included in your project.', + ); + } +} diff --git a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts index 7ff6a93a8382..45825ee607a0 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -547,6 +547,7 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu jsonLogs, i18nOptions, customConditions, + frameworkVersion, } = options; // Ensure unique hashes for i18n translation changes when using post-process inlining. @@ -570,6 +571,14 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu 'es2015', 'es2020', ]; + // The pre-linked code is not used with JIT for two reasons: + // 1) The pre-linked code may not have the metadata included that is required for JIT + // 2) The CLI is otherwise setup to use runtime linking for JIT to match the application template compilation + if (!jit) { + // The pre-linked package condition is based on the framework version. + // Currently this is specific to each patch version of the framework. + conditions.push('angular:linked-' + frameworkVersion); + } // Append custom conditions if present if (customConditions) { From 20af866c6baa39c8dcff3d1f331d951929025e9c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 1 Apr 2025 11:06:33 -0400 Subject: [PATCH 096/160] refactor(@schematics/angular): more comprehensive empty type file name cleanup The potential double periods within file name templates are now more completely removed in cases where there may be more than one set. --- .../angular/utility/generate-from-files.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/schematics/angular/utility/generate-from-files.ts b/packages/schematics/angular/utility/generate-from-files.ts index 98dd04ec4158..ac79813b7111 100644 --- a/packages/schematics/angular/utility/generate-from-files.ts +++ b/packages/schematics/angular/utility/generate-from-files.ts @@ -60,14 +60,17 @@ export function generateFromFiles( ...extraTemplateValues, }), !options.type - ? forEach(((file) => { - return file.path.includes('..') - ? { - content: file.content, - path: file.path.replace('..', '.'), - } - : file; - }) as FileOperator) + ? forEach((file) => { + let filePath: string = file.path; + while (filePath.includes('..')) { + filePath = filePath.replaceAll('..', '.'); + } + + return { + content: file.content, + path: filePath, + } as ReturnType; + }) : noop(), move(parsedPath.path + (options.flat ? '' : '/' + strings.dasherize(options.name))), ]); From 0fdf4989b3e16508b84c37e6169cc713692d9038 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 1 Apr 2025 12:29:58 +0000 Subject: [PATCH 097/160] refactor(@schematics/angular): update templates to use express version 5 --- package.json | 4 +- .../ssr-dev-server/specs/proxy_spec.ts | 7 +- .../builders/ssr-dev-server/specs/ssl_spec.ts | 7 +- .../ssr-dev-server/specs/works_spec.ts | 7 +- .../use-application-builder/migration.ts | 1 - .../application-builder/server.ts.template | 10 +- .../files/server-builder/server.ts.template | 15 +- packages/schematics/angular/ssr/index.ts | 3 + .../utility/latest-versions/package.json | 4 +- pnpm-lock.yaml | 228 +++++++++++++++++- .../express-engine-csp-nonce.ts | 13 +- .../express-engine-ngmodule.ts | 4 +- .../express-engine-standalone.ts | 12 +- ...er-routes-output-mode-static-http-calls.ts | 13 +- .../e2e/tests/vite/ssr-entry-express.ts | 23 +- tests/legacy-cli/e2e/utils/project.ts | 13 +- 16 files changed, 299 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index 67afdbd08d50..ccc580918e67 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "@types/babel__core": "7.20.5", "@types/babel__generator": "^7.6.8", "@types/browser-sync": "^2.27.0", - "@types/express": "^4.16.0", + "@types/express": "~5.0.1", "@types/http-proxy": "^1.17.4", "@types/ini": "^4.0.0", "@types/jasmine": "~5.1.0", @@ -106,7 +106,7 @@ "eslint-config-prettier": "10.1.1", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.31.0", - "express": "4.21.2", + "express": "5.1.0", "fast-glob": "3.3.3", "globals": "16.0.0", "http-proxy": "^1.18.1", diff --git a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/proxy_spec.ts b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/proxy_spec.ts index 36808413c2c7..4f1db1d17b17 100644 --- a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/proxy_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/proxy_spec.ts @@ -39,11 +39,12 @@ describe('Serve SSR Builder', () => { server.set('view engine', 'html'); server.set('views', distFolder); - server.get('*.*', express.static(distFolder, { - maxAge: '1y' + server.use(express.static(distFolder, { + maxAge: '1y', + index: false, })); - server.get('*', (req, res, next) => { + server.use((req, res, next) => { commonEngine .render({ bootstrap: AppServerModule, diff --git a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/ssl_spec.ts b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/ssl_spec.ts index 4a3725c100c4..6182b2e2baba 100644 --- a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/ssl_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/ssl_spec.ts @@ -39,11 +39,12 @@ describe('Serve SSR Builder', () => { server.set('view engine', 'html'); server.set('views', distFolder); - server.get('*.*', express.static(distFolder, { - maxAge: '1y' + server.use(express.static(distFolder, { + maxAge: '1y', + index: false, })); - server.get('*', (req, res, next) => { + server.use((req, res, next) => { commonEngine .render({ bootstrap: AppServerModule, diff --git a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/works_spec.ts b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/works_spec.ts index 857e6ab8ea5b..5944eb31c09d 100644 --- a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/works_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/works_spec.ts @@ -38,11 +38,12 @@ describe('Serve SSR Builder', () => { server.set('view engine', 'html'); server.set('views', distFolder); - server.get('*.*', express.static(distFolder, { - maxAge: '1y' + server.use(express.static(distFolder, { + maxAge: '1y', + index: false, })); - server.get('*', (req, res, next) => { + server.use((req, res, next) => { commonEngine .render({ bootstrap: AppServerModule, diff --git a/packages/schematics/angular/migrations/use-application-builder/migration.ts b/packages/schematics/angular/migrations/use-application-builder/migration.ts index 464f6b4bf560..4bcf6d9e6ee6 100644 --- a/packages/schematics/angular/migrations/use-application-builder/migration.ts +++ b/packages/schematics/angular/migrations/use-application-builder/migration.ts @@ -158,7 +158,6 @@ function* updateBuildTarget( yield externalSchematic('@schematics/angular', 'ssr', { project: projectName, - skipInstall: true, }); } } diff --git a/packages/schematics/angular/ssr/files/application-builder/server.ts.template b/packages/schematics/angular/ssr/files/application-builder/server.ts.template index adb6684f97b3..6fb8b2c77e5a 100644 --- a/packages/schematics/angular/ssr/files/application-builder/server.ts.template +++ b/packages/schematics/angular/ssr/files/application-builder/server.ts.template @@ -18,7 +18,7 @@ const angularApp = new AngularNodeAppEngine(); * * Example: * ```ts - * app.get('/api/**', (req, res) => { + * app.get('/api/{*splat}', (req, res) => { * // Handle API request * }); * ``` @@ -38,7 +38,7 @@ app.use( /** * Handle all other requests by rendering the Angular application. */ -app.use('/**', (req, res, next) => { +app.use((req, res, next) => { angularApp .handle(req) .then((response) => @@ -53,7 +53,11 @@ app.use('/**', (req, res, next) => { */ if (isMainModule(import.meta.url)) { const port = process.env['PORT'] || 4000; - app.listen(port, () => { + app.listen(port, (error) => { + if (error) { + throw error; + } + console.log(`Node Express server listening on http://localhost:${port}`); }); } diff --git a/packages/schematics/angular/ssr/files/server-builder/server.ts.template b/packages/schematics/angular/ssr/files/server-builder/server.ts.template index 1d985bd60030..7567fa65a81d 100644 --- a/packages/schematics/angular/ssr/files/server-builder/server.ts.template +++ b/packages/schematics/angular/ssr/files/server-builder/server.ts.template @@ -21,14 +21,15 @@ export function app(): express.Express { server.set('views', distFolder); // Example Express Rest API endpoints - // server.get('/api/**', (req, res) => { }); + // server.get('/api/{*splat}', (req, res) => { }); // Serve static files from /browser - server.get('*.*', express.static(distFolder, { - maxAge: '1y' + server.use(express.static(distFolder, { + maxAge: '1y', + index: false, })); // All regular routes use the Angular engine - server.get('*', (req, res, next) => { + server.use((req, res, next) => { const { protocol, originalUrl, baseUrl, headers } = req; commonEngine @@ -51,7 +52,11 @@ function run(): void { // Start up the Node server const server = app(); - server.listen(port, () => { + server.listen(port, (error) => { + if (error) { + throw error; + } + console.log(`Node Express server listening on http://localhost:${port}`); }); } diff --git a/packages/schematics/angular/ssr/index.ts b/packages/schematics/angular/ssr/index.ts index b6352428079f..b81188340f0b 100644 --- a/packages/schematics/angular/ssr/index.ts +++ b/packages/schematics/angular/ssr/index.ts @@ -24,6 +24,7 @@ import { posix } from 'node:path'; import { Schema as ServerOptions } from '../server/schema'; import { DependencyType, + ExistingBehavior, InstallBehavior, addDependency, readWorkspace, @@ -299,10 +300,12 @@ function addDependencies({ skipInstall }: SSROptions, isUsingApplicationBuilder: addDependency('express', latestVersions['express'], { type: DependencyType.Default, install, + existing: ExistingBehavior.Replace, }), addDependency('@types/express', latestVersions['@types/express'], { type: DependencyType.Dev, install, + existing: ExistingBehavior.Replace, }), ]; diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 406f275d0d66..92b883e83855 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -3,11 +3,11 @@ "comment": "This file is needed so that dependencies are synced by Renovate.", "private": true, "dependencies": { - "@types/express": "^4.17.17", + "@types/express": "^5.0.1", "@types/jasmine": "~5.1.0", "@types/node": "^20.17.19", "browser-sync": "^3.0.0", - "express": "^4.18.2", + "express": "^5.1.0", "jasmine-core": "~5.6.0", "jasmine-spec-reporter": "~7.0.0", "karma-chrome-launcher": "~3.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 553c6358c4b0..0d8263d0dd05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,8 +96,8 @@ importers: specifier: ^2.27.0 version: 2.29.0 '@types/express': - specifier: ^4.16.0 - version: 4.17.21 + specifier: ~5.0.1 + version: 5.0.1 '@types/http-proxy': specifier: ^1.17.4 version: 1.17.16 @@ -195,8 +195,8 @@ importers: specifier: 2.31.0 version: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)) express: - specifier: 4.21.2 - version: 4.21.2 + specifier: 5.1.0 + version: 5.1.0 fast-glob: specifier: 3.3.3 version: 3.3.3 @@ -2667,9 +2667,15 @@ packages: '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@5.0.6': + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@5.0.1': + resolution: {integrity: sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==} + '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} @@ -3124,6 +3130,10 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3464,6 +3474,10 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + bonjour-service@1.3.0: resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} @@ -3756,6 +3770,10 @@ packages: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} @@ -3769,6 +3787,10 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + cookie@0.7.1: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} @@ -4410,6 +4432,10 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -4494,6 +4520,10 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} @@ -4568,6 +4598,10 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -5141,6 +5175,9 @@ packages: is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -5658,6 +5695,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + memfs@4.17.0: resolution: {integrity: sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==} engines: {node: '>= 4.0.0'} @@ -5665,6 +5706,10 @@ packages: merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -5692,6 +5737,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -6281,6 +6330,10 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -6557,6 +6610,10 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -6726,6 +6783,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -6837,6 +6898,10 @@ packages: resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} engines: {node: '>= 0.8.0'} + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} @@ -6848,6 +6913,10 @@ packages: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + server-destroy@1.0.1: resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} @@ -7368,6 +7437,10 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -9730,7 +9803,7 @@ snapshots: '@types/cookies@0.9.0': dependencies: '@types/connect': 3.4.38 - '@types/express': 4.17.21 + '@types/express': 5.0.1 '@types/keygrip': 1.0.6 '@types/node': 20.17.28 @@ -9765,6 +9838,13 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + '@types/express-serve-static-core@5.0.6': + dependencies: + '@types/node': 20.17.28 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 @@ -9772,6 +9852,12 @@ snapshots: '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 + '@types/express@5.0.1': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 5.0.6 + '@types/serve-static': 1.15.7 + '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 @@ -9937,7 +10023,7 @@ snapshots: '@types/serve-index@1.9.4': dependencies: - '@types/express': 4.17.21 + '@types/express': 5.0.1 '@types/serve-static@1.15.7': dependencies: @@ -10512,6 +10598,11 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -10844,6 +10935,20 @@ snapshots: transitivePeerDependencies: - supports-color + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.0(supports-color@10.0.0) + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + bonjour-service@1.3.0: dependencies: fast-deep-equal: 3.1.3 @@ -11221,6 +11326,10 @@ snapshots: dependencies: safe-buffer: 5.2.1 + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + content-type@1.0.5: {} convert-source-map@1.9.0: {} @@ -11229,6 +11338,8 @@ snapshots: cookie-signature@1.0.6: {} + cookie-signature@1.2.2: {} + cookie@0.7.1: {} cookie@0.7.2: {} @@ -11987,6 +12098,38 @@ snapshots: transitivePeerDependencies: - supports-color + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0(supports-color@10.0.0) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + extend@3.0.2: {} external-editor@3.1.0: @@ -12094,6 +12237,17 @@ snapshots: transitivePeerDependencies: - supports-color + finalhandler@2.1.0: + dependencies: + debug: 4.4.0(supports-color@10.0.0) + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 @@ -12169,6 +12323,8 @@ snapshots: fresh@0.5.2: {} + fresh@2.0.0: {} + fs-constants@1.0.0: {} fs-extra@3.0.1: @@ -12800,6 +12956,8 @@ snapshots: is-promise@2.2.2: {} + is-promise@4.0.0: {} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.7 @@ -13420,6 +13578,8 @@ snapshots: media-typer@0.3.0: {} + media-typer@1.1.0: {} + memfs@4.17.0: dependencies: '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1) @@ -13429,6 +13589,8 @@ snapshots: merge-descriptors@1.0.3: {} + merge-descriptors@2.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -13448,6 +13610,10 @@ snapshots: dependencies: mime-db: 1.52.0 + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mime@2.6.0: {} @@ -13991,6 +14157,8 @@ snapshots: path-to-regexp@0.1.12: {} + path-to-regexp@8.2.0: {} + path-type@4.0.0: {} pathe@1.1.2: {} @@ -14323,6 +14491,13 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -14556,6 +14731,16 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.38.0 fsevents: 2.3.3 + router@2.2.0: + dependencies: + debug: 4.4.0(supports-color@10.0.0) + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + run-applescript@7.0.0: {} run-parallel@1.2.0: @@ -14683,6 +14868,22 @@ snapshots: transitivePeerDependencies: - supports-color + send@1.2.0: + dependencies: + debug: 4.4.0(supports-color@10.0.0) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 @@ -14708,6 +14909,15 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + server-destroy@1.0.1: {} set-blocking@2.0.0: {} @@ -15335,6 +15545,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts index 383674369be1..19e7dcd28b60 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts @@ -3,20 +3,13 @@ import { rimraf, writeMultipleFiles } from '../../../utils/fs'; import { findFreePort } from '../../../utils/network'; import { installWorkspacePackages } from '../../../utils/packages'; import { execAndWaitForOutputToMatch, ng } from '../../../utils/process'; -import { updateJsonFile, updateServerFileForWebpack, useSha } from '../../../utils/project'; +import { updateJsonFile, updateServerFileForEsbuild, useSha } from '../../../utils/project'; export default async function () { const useWebpackBuilder = !getGlobalVariable('argv')['esbuild']; // forcibly remove in case another test doesn't clean itself up await rimraf('node_modules/@angular/ssr'); - - if (useWebpackBuilder) { - // `--server-routing` not supported in `browser` builder. - await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); - } else { - await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); - } - + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); @@ -27,7 +20,7 @@ export default async function () { build.configurations.production.prerender = false; }); - await updateServerFileForWebpack('src/server.ts'); + await updateServerFileForEsbuild('src/server.ts'); } await writeMultipleFiles({ diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts index 8313496d2046..a2b1c6a6cc34 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts @@ -5,7 +5,7 @@ import { installWorkspacePackages } from '../../../utils/packages'; import { execAndWaitForOutputToMatch, ng } from '../../../utils/process'; import { updateJsonFile, - updateServerFileForWebpack, + updateServerFileForEsbuild, useCIChrome, useCIDefaults, useSha, @@ -62,7 +62,7 @@ export default async function () { build.options.outputMode = undefined; }); - await updateServerFileForWebpack('projects/test-project-two/src/server.ts'); + await updateServerFileForEsbuild('projects/test-project-two/src/server.ts'); } await writeMultipleFiles({ diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts index 531b29a4b0ec..7c819e67693a 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts @@ -3,20 +3,14 @@ import { rimraf, writeMultipleFiles } from '../../../utils/fs'; import { findFreePort } from '../../../utils/network'; import { installWorkspacePackages } from '../../../utils/packages'; import { execAndWaitForOutputToMatch, ng } from '../../../utils/process'; -import { updateJsonFile, updateServerFileForWebpack, useSha } from '../../../utils/project'; +import { updateJsonFile, updateServerFileForEsbuild, useSha } from '../../../utils/project'; export default async function () { // forcibly remove in case another test doesn't clean itself up await rimraf('node_modules/@angular/ssr'); const useWebpackBuilder = !getGlobalVariable('argv')['esbuild']; - - if (useWebpackBuilder) { - // `--server-routing` not supported in `browser` builder. - await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); - } else { - await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); - } + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); if (!useWebpackBuilder) { // Disable prerendering @@ -25,7 +19,7 @@ export default async function () { build.options.outputMode = undefined; }); - await updateServerFileForWebpack('src/server.ts'); + await updateServerFileForEsbuild('src/server.ts'); } await useSha(); diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts index d802b0271615..8e7483f77ee4 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts @@ -84,14 +84,16 @@ export default async function () { const browserDistFolder = join(import.meta.dirname, '../browser'); const angularNodeAppEngine = new AngularNodeAppEngine(); - server.get('/api', (req, res) => res.json({ dataFromAPI: true })); + server.get('/api', (req, res) => { + res.json({ dataFromAPI: true }) + }); - server.get('**', express.static(browserDistFolder, { + server.use(express.static(browserDistFolder, { maxAge: '1y', index: 'index.html' })); - server.get('**', (req, res, next) => { + server.use((req, res, next) => { angularNodeAppEngine.handle(req) .then((response) => response ? writeResponseToNodeResponse(response, res) : next()) .catch(next); @@ -103,7 +105,10 @@ export default async function () { if (isMainModule(import.meta.url)) { const port = process.env['PORT'] || 4000; - server.listen(port, () => { + server.listen(port, (error) => { + if (error) { + throw error; + } console.log(\`Node Express server listening on http://localhost:\${port}\`); }); } diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts index 18e43f7212a0..60e0c63a7c5a 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts @@ -46,17 +46,22 @@ export default async function () { const browserDistFolder = join(import.meta.dirname, '../browser'); const angularNodeAppEngine = new AngularNodeAppEngine(); - server.use('/api/**', (req, res) => res.json({ hello: 'foo' })); + server.use('/api/{*splat}', (req, res) => { + res.json({ hello: 'foo' }) + }); - server.get('**', express.static(browserDistFolder, { + server.use(express.static(browserDistFolder, { maxAge: '1y', index: 'index.html' })); - server.get('**', (req, res, next) => { - angularNodeAppEngine.handle(req) - .then((response) => response ? writeResponseToNodeResponse(response, res) : next()) - .catch(next); + server.use(async(req, res, next) => { + const response = await angularNodeAppEngine.handle(req); + if (response) { + writeResponseToNodeResponse(response, res); + } else { + next(); + } }); return server; @@ -65,7 +70,11 @@ export default async function () { const server = app(); if (isMainModule(import.meta.url)) { const port = process.env['PORT'] || 4000; - server.listen(port, () => { + server.listen(port, (error) => { + if (error) { + throw error; + } + console.log(\`Node Express server listening on http://localhost:\${port}\`); }); } diff --git a/tests/legacy-cli/e2e/utils/project.ts b/tests/legacy-cli/e2e/utils/project.ts index 42d86bb7a997..ea764bb20314 100644 --- a/tests/legacy-cli/e2e/utils/project.ts +++ b/tests/legacy-cli/e2e/utils/project.ts @@ -205,7 +205,7 @@ export function isPrereleaseCli(): boolean { return (prerelease(getNgCLIVersion())?.length ?? 0) > 0; } -export function updateServerFileForWebpack(filepath: string): Promise { +export function updateServerFileForEsbuild(filepath: string): Promise { return writeFile( filepath, ` @@ -227,13 +227,13 @@ export function updateServerFileForWebpack(filepath: string): Promise { server.set('view engine', 'html'); server.set('views', browserDistFolder); - server.get('**', express.static(browserDistFolder, { + server.use(express.static(browserDistFolder, { maxAge: '1y', - index: 'index.html', + index: false, })); // All regular routes use the Angular engine - server.get('**', (req, res, next) => { + server.use((req, res, next) => { const { protocol, originalUrl, baseUrl, headers } = req; commonEngine @@ -254,7 +254,10 @@ export function updateServerFileForWebpack(filepath: string): Promise { function run(): void { const port = process.env['PORT'] || 4000; const server = app(); - server.listen(port, () => { + server.listen(port, (error) => { + if (error) { + throw error; + } console.log(\`Node Express server listening on http://localhost:\${port}\`); }); } From 36a754a757a6b849cf7459df34f558549f8fff32 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Tue, 1 Apr 2025 17:52:42 +0000 Subject: [PATCH 098/160] ci: update to latest dev-infra action versions Update to the latest actions --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 46 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 38 +++++++-------- 6 files changed, 49 insertions(+), 49 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index e2b3d74374fe..5744988c6895 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@78f80fa56155b444bf8a41d82cc16a33982ee4cf + - uses: angular/dev-infra/github-actions/branch-manager@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d523aa589ae..03e44c6ebc5f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -59,11 +59,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,13 +85,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -108,9 +108,9 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: allow_windows_rbe: true google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} @@ -134,13 +134,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -158,13 +158,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -178,13 +178,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -214,11 +214,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index f18efc18ee1b..32f1e18bb34d 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@78f80fa56155b444bf8a41d82cc16a33982ee4cf + - uses: angular/dev-infra/github-actions/commit-message-based-labels@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@78f80fa56155b444bf8a41d82cc16a33982ee4cf + - uses: angular/dev-infra/github-actions/post-approval-changes@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 3212d17f8ebf..78e76ca85a7d 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@78f80fa56155b444bf8a41d82cc16a33982ee4cf + - uses: angular/dev-infra/github-actions/feature-request@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 79c1457dc3ac..b48e1c200fab 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 451396d8d7ba..cd310acf6da5 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/linting/licenses@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,9 +130,9 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa with: allow_windows_rbe: true - name: Run CLI E2E tests @@ -153,13 +153,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -176,12 +176,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@78f80fa56155b444bf8a41d82cc16a33982ee4cf + uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} From dfaedbc11b2d8ae6c428b2124f746a9939134c41 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 1 Apr 2025 14:01:35 +0000 Subject: [PATCH 099/160] build: setup `rules_esbuild` in preparation for `devinfra` update The shared dev-infra repository will depend on `rules_esbuild` going forward, so we need to install it. --- WORKSPACE | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/WORKSPACE b/WORKSPACE index 3e4f07d83515..f5537401bc1e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -256,3 +256,21 @@ register_toolchains( "@devinfra//bazel/git-toolchain:git_macos_arm64_toolchain", "@devinfra//bazel/git-toolchain:git_windows_toolchain", ) + +http_archive( + name = "aspect_rules_esbuild", + sha256 = "550e33ddeb86a564b22b2c5d3f84748c6639b1b2b71fae66bf362c33392cbed8", + strip_prefix = "rules_esbuild-0.21.0", + url = "https://github.com/aspect-build/rules_esbuild/releases/download/v0.21.0/rules_esbuild-v0.21.0.tar.gz", +) + +load("@aspect_rules_esbuild//esbuild:dependencies.bzl", "rules_esbuild_dependencies") + +rules_esbuild_dependencies() + +load("@aspect_rules_esbuild//esbuild:repositories.bzl", "LATEST_ESBUILD_VERSION", "esbuild_register_toolchains") + +esbuild_register_toolchains( + name = "esbuild", + esbuild_version = LATEST_ESBUILD_VERSION, +) From dcfef0a169502ad500a7e8b3d7f27439d6748b86 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 1 Apr 2025 18:02:58 +0000 Subject: [PATCH 100/160] build: update angular --- package.json | 2 +- pnpm-lock.yaml | 12 +++---- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++++---------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index ccc580918e67..ba9e6ad90cb9 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "20.0.0-next.4", "@angular/localize": "20.0.0-next.4", "@angular/material": "20.0.0-next.4", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1f3caa69331f8272286f9fd3b4599a1d64adf432", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#10732a822895b3d11cf2366f4e8dea25f1303c55", "@angular/platform-browser": "20.0.0-next.4", "@angular/platform-server": "20.0.0-next.4", "@angular/router": "20.0.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d8263d0dd05..1566644ce94c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: 20.0.0-next.4 version: 20.0.0-next.4(oylo4douhe75q4m3y4wi7udlwy) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#1f3caa69331f8272286f9fd3b4599a1d64adf432 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1f3caa69331f8272286f9fd3b4599a1d64adf432(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#10732a822895b3d11cf2366f4e8dea25f1303c55 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/10732a822895b3d11cf2366f4e8dea25f1303c55(encoding@0.1.13) '@angular/platform-browser': specifier: 20.0.0-next.4 version: 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) @@ -953,9 +953,9 @@ packages: '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1f3caa69331f8272286f9fd3b4599a1d64adf432': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1f3caa69331f8272286f9fd3b4599a1d64adf432} - version: 0.0.0-78f80fa56155b444bf8a41d82cc16a33982ee4cf + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/10732a822895b3d11cf2366f4e8dea25f1303c55': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/10732a822895b3d11cf2366f4e8dea25f1303c55} + version: 0.0.0-b3b3466509babc50fd7f00b90e8bc607e7fe41aa hasBin: true '@angular/platform-browser@20.0.0-next.4': @@ -8057,7 +8057,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1f3caa69331f8272286f9fd3b4599a1d64adf432(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/10732a822895b3d11cf2366f4e8dea25f1303c55(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 720e21fbbc7e..146568dcada4 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#ee90ee76ad2dddf73db6fc481552647e81b1461b", - "@angular/cdk": "github:angular/cdk-builds#bcac18115bc4293b61ac64a167d856919ab9ce05", - "@angular/common": "github:angular/common-builds#90fb2b8fd651f018c5b71ef6bb94561a5212e11f", - "@angular/compiler": "github:angular/compiler-builds#ca371245dc31d1e0a485c0327d8eced3ae98ca10", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#001b95d1818c8e708f63e3ec79d57c4f1f4780e6", - "@angular/core": "github:angular/core-builds#1997abe8ec0701afc0c29677c1af255affa3af99", - "@angular/forms": "github:angular/forms-builds#02bb3261483f1f3c7f0431f7c3de1fdecb93c5bc", - "@angular/language-service": "github:angular/language-service-builds#650657f38c6000befe5210e782e6a8095a1d634e", - "@angular/localize": "github:angular/localize-builds#30e59b94247953582aeeac3ed530f134097c3a36", - "@angular/material": "github:angular/material-builds#bdda90e6143ee02eab9152b3bc0898fcedec4e77", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#c39b60dc80de6baadadbb1f216fa339086c87723", - "@angular/platform-browser": "github:angular/platform-browser-builds#83b93fd859b2d2ba28b35bd7be5f0e420918ad00", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#7dfbc2a3e9f942168dbfc246818e8e3b1b3b9baa", - "@angular/platform-server": "github:angular/platform-server-builds#fc57e503f67e141896a8d495bef730c43a9f64a0", - "@angular/router": "github:angular/router-builds#0e134f3180a900d554f02dd2a2bcc2fb73de0592", - "@angular/service-worker": "github:angular/service-worker-builds#06b7c99e128c974fc6024d1f04c3e01912e94523" + "@angular/animations": "github:angular/animations-builds#498c05a8d84f26a3c83d1f0c33e4e0ba583e8f9d", + "@angular/cdk": "github:angular/cdk-builds#30ce45e3929cbaf1d8bdca2b07fc2410b41464fe", + "@angular/common": "github:angular/common-builds#61148559e3c3c5b6f2f5c5cf2ebfc0792d5ba389", + "@angular/compiler": "github:angular/compiler-builds#e7598bdc94f2a13962fcd8d1e98241f36341902c", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#4cc305beee187edc92e05fa43bf3028ff3a31c8c", + "@angular/core": "github:angular/core-builds#a0c37965cbdcfd0a1466bdd74607417e4e36d12e", + "@angular/forms": "github:angular/forms-builds#71568f2fc1ea388485b85bab94d600d8c8b68d32", + "@angular/language-service": "github:angular/language-service-builds#cc471f8f051be03f29430226d60cecccc2e223e9", + "@angular/localize": "github:angular/localize-builds#1f903d5b252708bfcedaa4207959131a3c720e31", + "@angular/material": "github:angular/material-builds#a68cadf8671c02373554ca4d153134992bc02062", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#cd1419f2d3f7d01156fe0c40a454620e4ade8264", + "@angular/platform-browser": "github:angular/platform-browser-builds#08c91dd428e760fc3e836c29cf3802f9b0aeafed", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#3bbfb824090dfdbd249246d3717d38c7a96a800d", + "@angular/platform-server": "github:angular/platform-server-builds#f0e7cbf62ccdf9ed425c3bef3dfa471fbd50d94f", + "@angular/router": "github:angular/router-builds#92d300f4bfd4d6090ad52679fe08454dee327a20", + "@angular/service-worker": "github:angular/service-worker-builds#e193111963abede84d1a7c90a6f4cf73d3ba52c3" } } From dce4bbf8ea40ba8c3d04ba74d62f999c98c7cff1 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 1 Apr 2025 17:46:05 +0000 Subject: [PATCH 101/160] build: update all non-major dependencies --- package.json | 6 +- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 322 +++++++++++------- 4 files changed, 198 insertions(+), 136 deletions(-) diff --git a/package.json b/package.json index ba9e6ad90cb9..e066d3f5e3b2 100644 --- a/package.json +++ b/package.json @@ -94,8 +94,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.28.0", - "@typescript-eslint/parser": "8.28.0", + "@typescript-eslint/eslint-plugin": "8.29.0", + "@typescript-eslint/parser": "8.29.0", "ajv": "8.17.1", "ansi-colors": "4.1.3", "beasties": "0.2.0", @@ -141,7 +141,7 @@ "typescript": "5.8.2", "undici": "7.6.0", "unenv": "^1.10.0", - "verdaccio": "6.1.1", + "verdaccio": "6.1.2", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "21.1.1", "zone.js": "^0.15.0" diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 8f119f2bcde4..6c5ec4908254 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,11 +38,11 @@ "picomatch": "4.0.2", "piscina": "4.9.2", "rollup": "4.38.0", - "sass": "1.86.0", + "sass": "1.86.1", "semver": "7.7.1", "source-map-support": "0.5.21", "tinyglobby": "0.2.12", - "vite": "6.2.3", + "vite": "6.2.4", "watchpack": "2.4.2" }, "optionalDependencies": { diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 02a65bfefa7f..1429e41d26df 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -48,7 +48,7 @@ "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.86.0", + "sass": "1.86.1", "sass-loader": "16.0.5", "semver": "7.7.1", "source-map-loader": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1566644ce94c..ec0b49347c6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,11 +159,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.28.0 - version: 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + specifier: 8.29.0 + version: 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) '@typescript-eslint/parser': - specifier: 8.28.0 - version: 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + specifier: 8.29.0 + version: 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) ajv: specifier: 8.17.1 version: 8.17.1 @@ -193,7 +193,7 @@ importers: version: 3.1.1(eslint@9.23.0(jiti@1.21.7)) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)) + version: 2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)) express: specifier: 5.1.0 version: 5.1.0 @@ -300,8 +300,8 @@ importers: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.1.1 - version: 6.1.1(encoding@0.1.13) + specifier: 6.1.2 + version: 6.1.2(encoding@0.1.13) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.2.2 @@ -357,7 +357,7 @@ importers: version: 5.1.8(@types/node@20.17.28) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -398,8 +398,8 @@ importers: specifier: 4.38.0 version: 4.38.0 sass: - specifier: 1.86.0 - version: 1.86.0 + specifier: 1.86.1 + version: 1.86.1 semver: specifier: 7.7.1 version: 7.7.1 @@ -410,8 +410,8 @@ importers: specifier: 0.2.12 version: 0.2.12 vite: - specifier: 6.2.3 - version: 6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1) + specifier: 6.2.4 + version: 6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -616,7 +616,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -693,11 +693,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.86.0 - version: 1.86.0 + specifier: 1.86.1 + version: 1.86.1 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.86.0)(webpack@5.98.0(esbuild@0.25.2)) + version: 16.0.5(sass@1.86.1)(webpack@5.98.0(esbuild@0.25.2)) semver: specifier: 7.7.1 version: 7.7.1 @@ -2878,16 +2878,16 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.28.0': - resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} + '@typescript-eslint/eslint-plugin@8.29.0': + resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 - '@typescript-eslint/parser@8.28.0': - resolution: {integrity: sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==} + '@typescript-eslint/parser@8.29.0': + resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2897,8 +2897,12 @@ packages: resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.28.0': - resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} + '@typescript-eslint/scope-manager@8.29.0': + resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.29.0': + resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2908,12 +2912,22 @@ packages: resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.29.0': + resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.28.0': resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.8.2 + '@typescript-eslint/typescript-estree@8.29.0': + resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: 5.8.2 + '@typescript-eslint/utils@8.28.0': resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2921,24 +2935,35 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.2 + '@typescript-eslint/utils@8.29.0': + resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: 5.8.2 + '@typescript-eslint/visitor-keys@8.28.0': resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@verdaccio/auth@8.0.0-next-8.14': - resolution: {integrity: sha512-OOuPVsfo1Y+/84pxS1KMSTtf5sc67PfNByzhBwC8cX4E1WiArHuP+rKfEqqCLu4NaN1BVNW4HiqCbZ1GzDyWtQ==} + '@typescript-eslint/visitor-keys@8.29.0': + resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@verdaccio/auth@8.0.0-next-8.15': + resolution: {integrity: sha512-vAfzGOHbPcPXMCI90jqm/qSZ1OUBnOGzudZA3+YtherncdwADekvXbdJlZVclcfmZ0sRbfVG5Xpf88aETiwfcw==} engines: {node: '>=18'} '@verdaccio/commons-api@10.2.0': resolution: {integrity: sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==} engines: {node: '>=8'} - '@verdaccio/config@8.0.0-next-8.14': - resolution: {integrity: sha512-5YOiYfh9a0q+9ARU4NYnfl1YJunNKfyz1x2ONEhvmHkP11E782ep7ZtrJhgg/ZJTtOmjbCspgw6FN3WBe3WlLQ==} + '@verdaccio/config@8.0.0-next-8.15': + resolution: {integrity: sha512-oEzQB+xeqaFAy54veMshqpt1hlZCYNkqoKuwkt7O8J43Fo/beiLluKUVneXckzi+pg1yvvGT7lNCbvuUQrxxQg==} engines: {node: '>=18'} - '@verdaccio/core@8.0.0-next-8.14': - resolution: {integrity: sha512-qj4KLkaVfMzqhDFn9xqpRvJQglalmgSJig0h8BzgI/fXQWlhmC0JI2TP0cJRYEhALN3UqjDAQQHKtqa3FqlfSw==} + '@verdaccio/core@8.0.0-next-8.15': + resolution: {integrity: sha512-d5r/ZSkCri7s1hvV35enptquV5LJ81NqMYJnsjuryIUnvwn1yaqLlcdd6zIL08unzCSr7qDdUAdwGRRm6PKzng==} engines: {node: '>=18'} '@verdaccio/file-locking@10.3.1': @@ -2957,47 +2982,47 @@ packages: resolution: {integrity: sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==} engines: {node: '>=12'} - '@verdaccio/logger-commons@8.0.0-next-8.14': - resolution: {integrity: sha512-NMRnYg2tWOOvyds5JwjWCKuGWVC5wvK/PIp0pCYQKsB8SsTnBAy1/9XL2gGBSKRkYju7CFO50Q8lRwQMn6k48A==} + '@verdaccio/logger-commons@8.0.0-next-8.15': + resolution: {integrity: sha512-nF7VgBC2cl5ufv+mZEwBHHyZFb1F0+kVkuRMf3Tyk+Qp4lXilC9MRZ0oc+RnzsDbNmJ6IZHgHNbs6aJrNfaRGg==} engines: {node: '>=18'} '@verdaccio/logger-prettify@8.0.0-next-8.2': resolution: {integrity: sha512-WMXnZPLw5W7GSIQE8UOTp6kRIwiTmnnoJbMmyMlGiNrsRaFKTqk09R5tKUgOyGgd4Lu6yncLbmdm5UjAuwHf1Q==} engines: {node: '>=18'} - '@verdaccio/logger@8.0.0-next-8.14': - resolution: {integrity: sha512-gddIKMRKDdtbnoCr9R9Yg38gD/lsydZCaehdaTVuolVU9y8iJLZtfjwjU0i2Jko8Qloc8p0CRifSnZhT4fiOug==} + '@verdaccio/logger@8.0.0-next-8.15': + resolution: {integrity: sha512-3gjhqvB87JUNDHFMN3YG4IweS9EgbCpAWZatNYzcoIWOoGiEaFQQBSM592CaFiI0yf8acyqWkNa1V95L1NMbRg==} engines: {node: '>=18'} - '@verdaccio/middleware@8.0.0-next-8.14': - resolution: {integrity: sha512-ieYP4TJ2jaBR23NUDwYlVJYh9rLx3Zi3NdKIc5snbNY1IVMXd4O9j+Wl3FBwibZIvHbuXRRVFk3c32irPPu0KA==} + '@verdaccio/middleware@8.0.0-next-8.15': + resolution: {integrity: sha512-xsCLGbnhqcYwE8g/u9wxNLfDcESpr9ptEZ8Ce7frVTphU7kYIL48QCDPMzug7U+AguNtCq4v4zcoY1PaOQ8mgw==} engines: {node: '>=18'} '@verdaccio/search-indexer@8.0.0-next-8.4': resolution: {integrity: sha512-Oea9m9VDqdlDPyQ9+fpcxZk0sIYH2twVK+YbykHpSYpjZRzz9hJfIr/uUwAgpWq83zAl2YDbz4zR3TjzjrWQig==} engines: {node: '>=18'} - '@verdaccio/signature@8.0.0-next-8.6': - resolution: {integrity: sha512-fIYC0mluIUmQBN47SYrZ1+I0UquSbAiGV5+n3ime4gyGJjDoDE28yB7BkqD869FOypFTjzzCMsxN0fuRU94UYg==} + '@verdaccio/signature@8.0.0-next-8.7': + resolution: {integrity: sha512-sqP+tNzUtVIwUtt1ZHwYoxsO3roDLK7GW8c8Hj0SNaON+9ele9z4NBhaor+g95zRuLy6xtw/RgOvpyLon/vPrA==} engines: {node: '>=18'} '@verdaccio/streams@10.2.1': resolution: {integrity: sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==} engines: {node: '>=12', npm: '>=5'} - '@verdaccio/tarball@13.0.0-next-8.14': - resolution: {integrity: sha512-7da3X1L+AsswI0RPOor3sWoLU4zl611Qgnms3mOBF+Y7pNwHF1KsrkXBM5aV/sxr0+FYsrU2bDrxHKg5aCWi0w==} + '@verdaccio/tarball@13.0.0-next-8.15': + resolution: {integrity: sha512-oSNmq7zD/iPIC5HpJbOJjW/lb0JV9k3jLwI6sG7kPgm+UIxVAOV4fKQOAD18HpHl/WjkF247NA6zGlAB94Habw==} engines: {node: '>=18'} - '@verdaccio/ui-theme@8.0.0-next-8.14': - resolution: {integrity: sha512-BW61qb3EGIoZrzb2AhrAqnpuim5Me7xFCR8VQPgJIya7z/zVhd+b3t4gnaOCowPnXgGrAvIyWuhVg92hnDh9pQ==} + '@verdaccio/ui-theme@8.0.0-next-8.15': + resolution: {integrity: sha512-k9BAM7rvbUqB2JPReNgXKUVTzBkdmIrNw0f6/7uyO+9cp7eVuarrPBnVF0oMc7jzVNBZRCpUksrhMZ0KwDZTpw==} - '@verdaccio/url@13.0.0-next-8.14': - resolution: {integrity: sha512-3DOPuaZAPSXh2tyYr0L6CSI9Gbd8qmWA5d4WtxH7yxVbRIEloiFOINBy4NaBZVtwfACANG22OtEd1mdvGjHcvA==} + '@verdaccio/url@13.0.0-next-8.15': + resolution: {integrity: sha512-1N/dGhw7cZMhupf/Xlm73beiL3oCaAiyo9DTumjF3aTcJnipVcT1hoj6CSj9RIX54824rUK9WVmo83dk0KPnjw==} engines: {node: '>=18'} - '@verdaccio/utils@8.1.0-next-8.14': - resolution: {integrity: sha512-ylEpOi1JD4NJeLqSunABsnmqZOAXyS3H5s2ysHnA68TNvfV/CCZwhinRNyjxiedOzJeZhSowiWwFynBD/f6dew==} + '@verdaccio/utils@8.1.0-next-8.15': + resolution: {integrity: sha512-efg/bunOUMVXV+MlljJCrpuT+OQRrQS4wJyGL92B3epUGlgZ8DXs+nxN5v59v1a6AocAdSKwHgZS0g9txmBhOg==} engines: {node: '>=18'} '@vitejs/plugin-basic-ssl@2.0.0': @@ -6846,8 +6871,8 @@ packages: webpack: optional: true - sass@1.86.0: - resolution: {integrity: sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==} + sass@1.86.1: + resolution: {integrity: sha512-Yaok4XELL1L9Im/ZUClKu//D2OP1rOljKj0Gf34a+GzLbMveOzL7CfqYo+JUa5Xt1nhTCW+OcKp/FtR7/iqj1w==} engines: {node: '>=14.0.0'} hasBin: true @@ -7607,20 +7632,20 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.14: - resolution: {integrity: sha512-btV62SbeBDtjdWsZN8RhzSE9ef89yYtdGWeRNSlYTwB/1qvQS//GhNWpUQvD83fPDUMrfo2o7tvmzIML6kOCNQ==} + verdaccio-audit@13.0.0-next-8.15: + resolution: {integrity: sha512-Aeau0u0fi5l4PoSDyOV6glz2FDO9+ofvogJIELV4H6fhDXhgPc2MnoKuaUgOT//khESLle/a6YfcLY2/KNLs6g==} engines: {node: '>=18'} verdaccio-auth-memory@10.2.2: resolution: {integrity: sha512-JCAnSqwq2l1UPt0hQcPn1B3X9mYpJ5zMsDvuDdmnlWLkrIDx2Wev5fluW0HC9hcFMITFl/DJj/DyzYOOqwhFSQ==} engines: {node: '>=8'} - verdaccio-htpasswd@13.0.0-next-8.14: - resolution: {integrity: sha512-JOXlm1g6MrZgOhzvgQfTNBmmstMJVTSiXmXbWCxSRjTzRX/v1WIdhwIWEzhn+lJUEWKv+1Z17dSSk6NiVZW/8Q==} + verdaccio-htpasswd@13.0.0-next-8.15: + resolution: {integrity: sha512-rQg5oZ/rReDAM4g4W68hvtzReTbM6vduvVtobHsQxhbtbotEuUjP6O8uaROYtgZ60giGva5Tub2SOm2T9Ln9Dw==} engines: {node: '>=18'} - verdaccio@6.1.1: - resolution: {integrity: sha512-kemqW6Y/VA2Z7I8Dn3seyMzZNlnIQaP8l9mtHKriW26fxlAD2K+9esSTn8gsZej038Z7sbqpy1RFJNOZ5BPr0w==} + verdaccio@6.1.2: + resolution: {integrity: sha512-HQCquycSQkA+tKRVqMjIVRzmhzTciLfScvKIhhiwZZ9Qd13e2KJQTOdB7QrSacfJuPpl94TA5EZ7XmVRQKk3ag==} engines: {node: '>=18'} hasBin: true @@ -7628,8 +7653,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@6.2.3: - resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==} + vite@6.2.4: + resolution: {integrity: sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -10101,14 +10126,14 @@ snapshots: '@types/node': 20.17.28 optional: true - '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/scope-manager': 8.28.0 - '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.28.0 + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.29.0 eslint: 9.23.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 @@ -10118,12 +10143,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.28.0 - '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.28.0 + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.29.0 debug: 4.4.0(supports-color@10.0.0) eslint: 9.23.0(jiti@1.21.7) typescript: 5.8.2 @@ -10135,10 +10160,15 @@ snapshots: '@typescript-eslint/types': 8.28.0 '@typescript-eslint/visitor-keys': 8.28.0 - '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/scope-manager@8.29.0': dependencies: - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/visitor-keys': 8.29.0 + + '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) debug: 4.4.0(supports-color@10.0.0) eslint: 9.23.0(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.8.2) @@ -10148,6 +10178,8 @@ snapshots: '@typescript-eslint/types@8.28.0': {} + '@typescript-eslint/types@8.29.0': {} + '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 8.28.0 @@ -10162,6 +10194,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.2)': + dependencies: + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/visitor-keys': 8.29.0 + debug: 4.4.0(supports-color@10.0.0) + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) @@ -10173,21 +10219,37 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) + eslint: 9.23.0(jiti@1.21.7) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.28.0': dependencies: '@typescript-eslint/types': 8.28.0 eslint-visitor-keys: 4.2.0 - '@verdaccio/auth@8.0.0-next-8.14': + '@typescript-eslint/visitor-keys@8.29.0': + dependencies: + '@typescript-eslint/types': 8.29.0 + eslint-visitor-keys: 4.2.0 + + '@verdaccio/auth@8.0.0-next-8.15': dependencies: - '@verdaccio/config': 8.0.0-next-8.14 - '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/config': 8.0.0-next-8.15 + '@verdaccio/core': 8.0.0-next-8.15 '@verdaccio/loaders': 8.0.0-next-8.6 - '@verdaccio/signature': 8.0.0-next-8.6 - '@verdaccio/utils': 8.1.0-next-8.14 + '@verdaccio/signature': 8.0.0-next-8.7 + '@verdaccio/utils': 8.1.0-next-8.15 debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.14 + verdaccio-htpasswd: 13.0.0-next-8.15 transitivePeerDependencies: - supports-color @@ -10196,10 +10258,10 @@ snapshots: http-errors: 2.0.0 http-status-codes: 2.2.0 - '@verdaccio/config@8.0.0-next-8.14': + '@verdaccio/config@8.0.0-next-8.15': dependencies: - '@verdaccio/core': 8.0.0-next-8.14 - '@verdaccio/utils': 8.1.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.15 + '@verdaccio/utils': 8.1.0-next-8.15 debug: 4.4.0(supports-color@10.0.0) js-yaml: 4.1.0 lodash: 4.17.21 @@ -10207,7 +10269,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/core@8.0.0-next-8.14': + '@verdaccio/core@8.0.0-next-8.15': dependencies: ajv: 8.17.1 core-js: 3.40.0 @@ -10244,9 +10306,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/logger-commons@8.0.0-next-8.14': + '@verdaccio/logger-commons@8.0.0-next-8.15': dependencies: - '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.15 '@verdaccio/logger-prettify': 8.0.0-next-8.2 colorette: 2.0.20 debug: 4.4.0(supports-color@10.0.0) @@ -10261,19 +10323,19 @@ snapshots: pino-abstract-transport: 1.2.0 sonic-boom: 3.8.1 - '@verdaccio/logger@8.0.0-next-8.14': + '@verdaccio/logger@8.0.0-next-8.15': dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.14 + '@verdaccio/logger-commons': 8.0.0-next-8.15 pino: 9.6.0 transitivePeerDependencies: - supports-color - '@verdaccio/middleware@8.0.0-next-8.14': + '@verdaccio/middleware@8.0.0-next-8.15': dependencies: - '@verdaccio/config': 8.0.0-next-8.14 - '@verdaccio/core': 8.0.0-next-8.14 - '@verdaccio/url': 13.0.0-next-8.14 - '@verdaccio/utils': 8.1.0-next-8.14 + '@verdaccio/config': 8.0.0-next-8.15 + '@verdaccio/core': 8.0.0-next-8.15 + '@verdaccio/url': 13.0.0-next-8.15 + '@verdaccio/utils': 8.1.0-next-8.15 debug: 4.4.0(supports-color@10.0.0) express: 4.21.2 express-rate-limit: 5.5.1 @@ -10285,9 +10347,9 @@ snapshots: '@verdaccio/search-indexer@8.0.0-next-8.4': {} - '@verdaccio/signature@8.0.0-next-8.6': + '@verdaccio/signature@8.0.0-next-8.7': dependencies: - '@verdaccio/config': 8.0.0-next-8.14 + '@verdaccio/config': 8.0.0-next-8.15 debug: 4.4.0(supports-color@10.0.0) jsonwebtoken: 9.0.2 transitivePeerDependencies: @@ -10295,11 +10357,11 @@ snapshots: '@verdaccio/streams@10.2.1': {} - '@verdaccio/tarball@13.0.0-next-8.14': + '@verdaccio/tarball@13.0.0-next-8.15': dependencies: - '@verdaccio/core': 8.0.0-next-8.14 - '@verdaccio/url': 13.0.0-next-8.14 - '@verdaccio/utils': 8.1.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.15 + '@verdaccio/url': 13.0.0-next-8.15 + '@verdaccio/utils': 8.1.0-next-8.15 debug: 4.4.0(supports-color@10.0.0) gunzip-maybe: 1.4.2 lodash: 4.17.21 @@ -10307,27 +10369,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/ui-theme@8.0.0-next-8.14': {} + '@verdaccio/ui-theme@8.0.0-next-8.15': {} - '@verdaccio/url@13.0.0-next-8.14': + '@verdaccio/url@13.0.0-next-8.15': dependencies: - '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.15 debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 validator: 13.12.0 transitivePeerDependencies: - supports-color - '@verdaccio/utils@8.1.0-next-8.14': + '@verdaccio/utils@8.1.0-next-8.15': dependencies: - '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.15 lodash: 4.17.21 minimatch: 7.4.6 semver: 7.7.1 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1))': dependencies: - vite: 6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1) '@web/browser-logs@0.4.1': dependencies: @@ -11897,11 +11959,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -11911,7 +11973,7 @@ snapshots: dependencies: eslint: 9.23.0(jiti@1.21.7) - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11922,7 +11984,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11934,7 +11996,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -12140,7 +12202,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.0(supports-color@10.0.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -13780,7 +13842,7 @@ snapshots: piscina: 4.9.2 postcss: 8.5.3 rxjs: 7.8.2 - sass: 1.86.0 + sass: 1.86.1 tinyglobby: 0.2.12 tslib: 2.8.1 typescript: 5.8.2 @@ -14780,14 +14842,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.86.0)(webpack@5.98.0(esbuild@0.25.2)): + sass-loader@16.0.5(sass@1.86.1)(webpack@5.98.0(esbuild@0.25.2)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.86.0 + sass: 1.86.1 webpack: 5.98.0(esbuild@0.25.2) - sass@1.86.0: + sass@1.86.1: dependencies: chokidar: 4.0.3 immutable: 5.1.1 @@ -15705,10 +15767,10 @@ snapshots: vary@1.1.2: {} - verdaccio-audit@13.0.0-next-8.14(encoding@0.1.13): + verdaccio-audit@13.0.0-next-8.15(encoding@0.1.13): dependencies: - '@verdaccio/config': 8.0.0-next-8.14 - '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/config': 8.0.0-next-8.15 + '@verdaccio/core': 8.0.0-next-8.15 express: 4.21.2 https-proxy-agent: 5.0.1(supports-color@10.0.0) node-fetch: 2.6.7(encoding@0.1.13) @@ -15720,9 +15782,9 @@ snapshots: dependencies: '@verdaccio/commons-api': 10.2.0 - verdaccio-htpasswd@13.0.0-next-8.14: + verdaccio-htpasswd@13.0.0-next-8.15: dependencies: - '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/core': 8.0.0-next-8.15 '@verdaccio/file-locking': 13.0.0-next-8.3 apache-md5: 1.1.8 bcryptjs: 2.4.3 @@ -15733,23 +15795,23 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio@6.1.1(encoding@0.1.13): + verdaccio@6.1.2(encoding@0.1.13): dependencies: '@cypress/request': 3.0.8 - '@verdaccio/auth': 8.0.0-next-8.14 - '@verdaccio/config': 8.0.0-next-8.14 - '@verdaccio/core': 8.0.0-next-8.14 + '@verdaccio/auth': 8.0.0-next-8.15 + '@verdaccio/config': 8.0.0-next-8.15 + '@verdaccio/core': 8.0.0-next-8.15 '@verdaccio/loaders': 8.0.0-next-8.6 '@verdaccio/local-storage-legacy': 11.0.2 - '@verdaccio/logger': 8.0.0-next-8.14 - '@verdaccio/middleware': 8.0.0-next-8.14 + '@verdaccio/logger': 8.0.0-next-8.15 + '@verdaccio/middleware': 8.0.0-next-8.15 '@verdaccio/search-indexer': 8.0.0-next-8.4 - '@verdaccio/signature': 8.0.0-next-8.6 + '@verdaccio/signature': 8.0.0-next-8.7 '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.14 - '@verdaccio/ui-theme': 8.0.0-next-8.14 - '@verdaccio/url': 13.0.0-next-8.14 - '@verdaccio/utils': 8.1.0-next-8.14 + '@verdaccio/tarball': 13.0.0-next-8.15 + '@verdaccio/ui-theme': 8.0.0-next-8.15 + '@verdaccio/url': 13.0.0-next-8.15 + '@verdaccio/utils': 8.1.0-next-8.15 JSONStream: 1.3.5 async: 3.2.6 clipanion: 4.0.0-rc.4 @@ -15765,8 +15827,8 @@ snapshots: mkdirp: 1.0.4 pkginfo: 0.4.1 semver: 7.6.3 - verdaccio-audit: 13.0.0-next-8.14(encoding@0.1.13) - verdaccio-htpasswd: 13.0.0-next-8.14 + verdaccio-audit: 13.0.0-next-8.15(encoding@0.1.13) + verdaccio-htpasswd: 13.0.0-next-8.15 transitivePeerDependencies: - encoding - supports-color @@ -15777,7 +15839,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.3(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.7.1): + vite@6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 @@ -15787,7 +15849,7 @@ snapshots: fsevents: 2.3.3 jiti: 1.21.7 less: 4.2.2 - sass: 1.86.0 + sass: 1.86.1 terser: 5.39.0 yaml: 2.7.1 From f6a558af63d30d79b3cf373a93a01475c1089c5a Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 2 Apr 2025 10:25:27 +0000 Subject: [PATCH 102/160] build: update all non-major dependencies Closes #29998 as a pr takeover --- package.json | 6 +- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 291 +++++++++--------- 4 files changed, 160 insertions(+), 145 deletions(-) diff --git a/package.json b/package.json index e066d3f5e3b2..85195eebfeca 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@angular/service-worker": "20.0.0-next.4", "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "8.0.3", - "@eslint/compat": "1.2.7", + "@eslint/compat": "1.2.8", "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.23.0", "@rollup/plugin-alias": "^5.1.1", @@ -129,7 +129,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.0.171", - "rollup": "4.38.0", + "rollup": "4.39.0", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "semver": "7.7.1", @@ -139,7 +139,7 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.8.2", - "undici": "7.6.0", + "undici": "7.7.0", "unenv": "^1.10.0", "verdaccio": "6.1.2", "verdaccio-auth-memory": "^10.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 6c5ec4908254..9c3ec9c89bce 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,7 +37,7 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.9.2", - "rollup": "4.38.0", + "rollup": "4.39.0", "sass": "1.86.1", "semver": "7.7.1", "source-map-support": "0.5.21", @@ -52,7 +52,7 @@ "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", "less": "4.2.2", - "ng-packagr": "20.0.0-next.2", + "ng-packagr": "20.0.0-next.3", "postcss": "8.5.3", "rxjs": "7.8.2" }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 1429e41d26df..027eb0aae921 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -69,8 +69,8 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.0", "browser-sync": "3.0.3", - "ng-packagr": "20.0.0-next.2", - "undici": "7.6.0" + "ng-packagr": "20.0.0-next.3", + "undici": "7.7.0" }, "peerDependencies": { "@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ec0b49347c6a..577670855784 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,8 +63,8 @@ importers: specifier: 8.0.3 version: 8.0.3 '@eslint/compat': - specifier: 1.2.7 - version: 1.2.7(eslint@9.23.0(jiti@1.21.7)) + specifier: 1.2.8 + version: 1.2.8(eslint@9.23.0(jiti@1.21.7)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 @@ -73,16 +73,16 @@ importers: version: 9.23.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.38.0) + version: 5.1.1(rollup@4.39.0) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.3(rollup@4.38.0) + version: 28.0.3(rollup@4.39.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.38.0) + version: 6.1.0(rollup@4.39.0) '@rollup/plugin-node-resolve': specifier: ^13.0.5 - version: 13.3.0(rollup@4.38.0) + version: 13.3.0(rollup@4.39.0) '@stylistic/eslint-plugin': specifier: ^4.0.0 version: 4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) @@ -264,14 +264,14 @@ importers: specifier: 23.0.171 version: 23.0.171(encoding@0.1.13) rollup: - specifier: 4.38.0 - version: 4.38.0 + specifier: 4.39.0 + version: 4.39.0 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@20.17.28)(rollup@4.38.0) + version: 0.6.3(@types/node@20.17.28)(rollup@4.39.0) semver: specifier: 7.7.1 version: 7.7.1 @@ -294,8 +294,8 @@ importers: specifier: 5.8.2 version: 5.8.2 undici: - specifier: 7.6.0 - version: 7.6.0 + specifier: 7.7.0 + version: 7.7.0 unenv: specifier: ^1.10.0 version: 1.10.0 @@ -395,8 +395,8 @@ importers: specifier: 4.9.2 version: 4.9.2 rollup: - specifier: 4.38.0 - version: 4.38.0 + specifier: 4.39.0 + version: 4.39.0 sass: specifier: 1.86.1 version: 1.86.1 @@ -430,8 +430,8 @@ importers: specifier: 4.2.2 version: 4.2.2 ng-packagr: - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) postcss: specifier: 8.5.3 version: 8.5.3 @@ -746,11 +746,11 @@ importers: specifier: 3.0.3 version: 3.0.3 ng-packagr: - specifier: 20.0.0-next.2 - version: 20.0.0-next.2(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + specifier: 20.0.0-next.3 + version: 20.0.0-next.3(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: - specifier: 7.6.0 - version: 7.6.0 + specifier: 7.7.0 + version: 7.7.0 packages/angular_devkit/build_webpack: dependencies: @@ -1675,8 +1675,8 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.2.7': - resolution: {integrity: sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==} + '@eslint/compat@1.2.8': + resolution: {integrity: sha512-LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saowA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^9.10.0 @@ -2421,103 +2421,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.38.0': - resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==} + '@rollup/rollup-android-arm-eabi@4.39.0': + resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.38.0': - resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==} + '@rollup/rollup-android-arm64@4.39.0': + resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.38.0': - resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==} + '@rollup/rollup-darwin-arm64@4.39.0': + resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.38.0': - resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==} + '@rollup/rollup-darwin-x64@4.39.0': + resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.38.0': - resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==} + '@rollup/rollup-freebsd-arm64@4.39.0': + resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.38.0': - resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==} + '@rollup/rollup-freebsd-x64@4.39.0': + resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.38.0': - resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==} + '@rollup/rollup-linux-arm-gnueabihf@4.39.0': + resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.38.0': - resolution: {integrity: sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==} + '@rollup/rollup-linux-arm-musleabihf@4.39.0': + resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.38.0': - resolution: {integrity: sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==} + '@rollup/rollup-linux-arm64-gnu@4.39.0': + resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.38.0': - resolution: {integrity: sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==} + '@rollup/rollup-linux-arm64-musl@4.39.0': + resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.38.0': - resolution: {integrity: sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==} + '@rollup/rollup-linux-loongarch64-gnu@4.39.0': + resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': - resolution: {integrity: sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': + resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.38.0': - resolution: {integrity: sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==} + '@rollup/rollup-linux-riscv64-gnu@4.39.0': + resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.38.0': - resolution: {integrity: sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==} + '@rollup/rollup-linux-riscv64-musl@4.39.0': + resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.38.0': - resolution: {integrity: sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==} + '@rollup/rollup-linux-s390x-gnu@4.39.0': + resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.38.0': - resolution: {integrity: sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==} + '@rollup/rollup-linux-x64-gnu@4.39.0': + resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.38.0': - resolution: {integrity: sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==} + '@rollup/rollup-linux-x64-musl@4.39.0': + resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.38.0': - resolution: {integrity: sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==} + '@rollup/rollup-win32-arm64-msvc@4.39.0': + resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.38.0': - resolution: {integrity: sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==} + '@rollup/rollup-win32-ia32-msvc@4.39.0': + resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.38.0': - resolution: {integrity: sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==} + '@rollup/rollup-win32-x64-msvc@4.39.0': + resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} cpu: [x64] os: [win32] @@ -5942,8 +5942,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@20.0.0-next.2: - resolution: {integrity: sha512-JVlv4DBWSRmr6sccKHsvCg9QayT0D7Fcx2LeeCk35Ppi1/kZCMTAtpsRQg3x28A9x/Bxw5CfNsDvtsWvAcbKyQ==} + ng-packagr@20.0.0-next.3: + resolution: {integrity: sha512-yJp8gxzpLU8fw3dyk1QBnyHXeKlG+divhaZnwQlTT7+AsUZ3O51Im9ZRYNHrwf7keBY7zhZ4DXUvWI0xcok4UA==} engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: @@ -6793,6 +6793,13 @@ packages: resolution: {integrity: sha512-68LWDlUKxqLO4Si3Extca4X7P99tU7s0KLnVUzN6h6SDihGAWYMQ0q73XLnHbUmG0IFgvC0AzuYvbogceQ9Hcw==} engines: {node: '>=18.0.0'} + rollup-plugin-dts@6.2.1: + resolution: {integrity: sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: 5.8.2 + rollup-plugin-sourcemaps@0.6.3: resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} @@ -6803,8 +6810,8 @@ packages: '@types/node': optional: true - rollup@4.38.0: - resolution: {integrity: sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==} + rollup@4.39.0: + resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7527,8 +7534,8 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici@7.6.0: - resolution: {integrity: sha512-gaFsbThjrDGvAaD670r81RZro/s6H2PVZF640Qn0p5kZK+/rim7/mmyfp2W7VB5vOMaFM8vuFBJUaMlaZTYHlA==} + undici@7.7.0: + resolution: {integrity: sha512-tZ6+5NBq4KH35rr46XJ2JPFKxfcBlYNaqLF/wyWIO9RMHqqU/gx/CLB1Y2qMcgB8lWw/bKHa7qzspqCN7mUHvA==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -8901,7 +8908,7 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.7(eslint@9.23.0(jiti@1.21.7))': + '@eslint/compat@1.2.8(eslint@9.23.0(jiti@1.21.7))': optionalDependencies: eslint: 9.23.0(jiti@1.21.7) @@ -9568,13 +9575,13 @@ snapshots: - bare-buffer - supports-color - '@rollup/plugin-alias@5.1.1(rollup@4.38.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.39.0)': optionalDependencies: - rollup: 4.38.0 + rollup: 4.39.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.38.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.3(picomatch@4.0.2) @@ -9582,107 +9589,107 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.38.0 + rollup: 4.39.0 - '@rollup/plugin-json@6.1.0(rollup@4.38.0)': + '@rollup/plugin-json@6.1.0(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) optionalDependencies: - rollup: 4.38.0 + rollup: 4.39.0 - '@rollup/plugin-node-resolve@13.3.0(rollup@4.38.0)': + '@rollup/plugin-node-resolve@13.3.0(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.38.0) + '@rollup/pluginutils': 3.1.0(rollup@4.39.0) '@types/resolve': 1.17.1 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.10 - rollup: 4.38.0 + rollup: 4.39.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.38.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.38.0 + rollup: 4.39.0 - '@rollup/pluginutils@3.1.0(rollup@4.38.0)': + '@rollup/pluginutils@3.1.0(rollup@4.39.0)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 4.38.0 + rollup: 4.39.0 - '@rollup/pluginutils@5.1.4(rollup@4.38.0)': + '@rollup/pluginutils@5.1.4(rollup@4.39.0)': dependencies: '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.38.0 + rollup: 4.39.0 - '@rollup/rollup-android-arm-eabi@4.38.0': + '@rollup/rollup-android-arm-eabi@4.39.0': optional: true - '@rollup/rollup-android-arm64@4.38.0': + '@rollup/rollup-android-arm64@4.39.0': optional: true - '@rollup/rollup-darwin-arm64@4.38.0': + '@rollup/rollup-darwin-arm64@4.39.0': optional: true - '@rollup/rollup-darwin-x64@4.38.0': + '@rollup/rollup-darwin-x64@4.39.0': optional: true - '@rollup/rollup-freebsd-arm64@4.38.0': + '@rollup/rollup-freebsd-arm64@4.39.0': optional: true - '@rollup/rollup-freebsd-x64@4.38.0': + '@rollup/rollup-freebsd-x64@4.39.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.38.0': + '@rollup/rollup-linux-arm-gnueabihf@4.39.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.38.0': + '@rollup/rollup-linux-arm-musleabihf@4.39.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.38.0': + '@rollup/rollup-linux-arm64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.38.0': + '@rollup/rollup-linux-arm64-musl@4.39.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.38.0': + '@rollup/rollup-linux-loongarch64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.38.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.38.0': + '@rollup/rollup-linux-riscv64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.38.0': + '@rollup/rollup-linux-riscv64-musl@4.39.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.38.0': + '@rollup/rollup-linux-s390x-gnu@4.39.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.38.0': + '@rollup/rollup-linux-x64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-x64-musl@4.38.0': + '@rollup/rollup-linux-x64-musl@4.39.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.38.0': + '@rollup/rollup-win32-arm64-msvc@4.39.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.38.0': + '@rollup/rollup-win32-ia32-msvc@4.39.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.38.0': + '@rollup/rollup-win32-x64-msvc@4.39.0': optional: true '@rollup/wasm-node@4.38.0': @@ -10424,11 +10431,11 @@ snapshots: '@web/dev-server-rollup@0.6.4': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.38.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.39.0) '@web/dev-server-core': 0.7.5 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.38.0 + rollup: 4.39.0 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -13820,18 +13827,17 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.2(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): + ng-packagr@20.0.0-next.3(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) - '@rollup/plugin-json': 6.1.0(rollup@4.38.0) + '@rollup/plugin-json': 6.1.0(rollup@4.39.0) '@rollup/wasm-node': 4.38.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.4 chokidar: 4.0.3 commander: 13.1.0 - convert-source-map: 2.0.0 dependency-graph: 1.0.0 esbuild: 0.25.2 find-cache-dir: 3.3.2 @@ -13841,13 +13847,14 @@ snapshots: ora: 5.4.1 piscina: 4.9.2 postcss: 8.5.3 + rollup-plugin-dts: 6.2.1(rollup@4.39.0)(typescript@5.8.2) rxjs: 7.8.2 sass: 1.86.1 tinyglobby: 0.2.12 tslib: 2.8.1 typescript: 5.8.2 optionalDependencies: - rollup: 4.38.0 + rollup: 4.39.0 nice-try@1.0.5: {} @@ -14759,38 +14766,46 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.28)(rollup@4.38.0): + rollup-plugin-dts@6.2.1(rollup@4.39.0)(typescript@5.8.2): + dependencies: + magic-string: 0.30.17 + rollup: 4.39.0 + typescript: 5.8.2 + optionalDependencies: + '@babel/code-frame': 7.26.2 + + rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.28)(rollup@4.39.0): dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.38.0) - rollup: 4.38.0 + '@rollup/pluginutils': 3.1.0(rollup@4.39.0) + rollup: 4.39.0 source-map-resolve: 0.6.0 optionalDependencies: '@types/node': 20.17.28 - rollup@4.38.0: + rollup@4.39.0: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.38.0 - '@rollup/rollup-android-arm64': 4.38.0 - '@rollup/rollup-darwin-arm64': 4.38.0 - '@rollup/rollup-darwin-x64': 4.38.0 - '@rollup/rollup-freebsd-arm64': 4.38.0 - '@rollup/rollup-freebsd-x64': 4.38.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.38.0 - '@rollup/rollup-linux-arm-musleabihf': 4.38.0 - '@rollup/rollup-linux-arm64-gnu': 4.38.0 - '@rollup/rollup-linux-arm64-musl': 4.38.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.38.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.38.0 - '@rollup/rollup-linux-riscv64-gnu': 4.38.0 - '@rollup/rollup-linux-riscv64-musl': 4.38.0 - '@rollup/rollup-linux-s390x-gnu': 4.38.0 - '@rollup/rollup-linux-x64-gnu': 4.38.0 - '@rollup/rollup-linux-x64-musl': 4.38.0 - '@rollup/rollup-win32-arm64-msvc': 4.38.0 - '@rollup/rollup-win32-ia32-msvc': 4.38.0 - '@rollup/rollup-win32-x64-msvc': 4.38.0 + '@rollup/rollup-android-arm-eabi': 4.39.0 + '@rollup/rollup-android-arm64': 4.39.0 + '@rollup/rollup-darwin-arm64': 4.39.0 + '@rollup/rollup-darwin-x64': 4.39.0 + '@rollup/rollup-freebsd-arm64': 4.39.0 + '@rollup/rollup-freebsd-x64': 4.39.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 + '@rollup/rollup-linux-arm-musleabihf': 4.39.0 + '@rollup/rollup-linux-arm64-gnu': 4.39.0 + '@rollup/rollup-linux-arm64-musl': 4.39.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-musl': 4.39.0 + '@rollup/rollup-linux-s390x-gnu': 4.39.0 + '@rollup/rollup-linux-x64-gnu': 4.39.0 + '@rollup/rollup-linux-x64-musl': 4.39.0 + '@rollup/rollup-win32-arm64-msvc': 4.39.0 + '@rollup/rollup-win32-ia32-msvc': 4.39.0 + '@rollup/rollup-win32-x64-msvc': 4.39.0 fsevents: 2.3.3 router@2.2.0: @@ -15679,7 +15694,7 @@ snapshots: undici-types@6.19.8: {} - undici@7.6.0: {} + undici@7.7.0: {} unenv@1.10.0: dependencies: @@ -15843,7 +15858,7 @@ snapshots: dependencies: esbuild: 0.25.2 postcss: 8.5.3 - rollup: 4.38.0 + rollup: 4.39.0 optionalDependencies: '@types/node': 20.17.28 fsevents: 2.3.3 From 296873c8c02c06d45bca1f278cb213784d3741d2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 1 Apr 2025 20:06:56 -0400 Subject: [PATCH 103/160] refactor(@angular/build): provide a default for the application index option The application build system's `index` option is now considered optional. If not present, the value will be an `index.html` file within the configured project source root (`sourceRoot`). The default only applies to the short-form of the option. The object-based long-form continues to require explicit configuration of the input index HTML file. This change allows the removal of the `index` option from any project that uses the default generated value. --- goldens/public-api/angular/build/index.api.md | 2 +- .../build/src/builders/application/options.ts | 12 +++++++----- .../build/src/builders/application/schema.json | 2 +- .../application/tests/options/index_spec.ts | 17 +++++++++++++++++ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 062f6d92ff38..bf620bfa15c4 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -40,7 +40,7 @@ export type ApplicationBuilderOptions = { fileReplacements?: FileReplacement[]; i18nDuplicateTranslation?: I18NTranslation; i18nMissingTranslation?: I18NTranslation; - index: IndexUnion; + index?: IndexUnion; inlineStyleLanguage?: InlineStyleLanguage; loader?: { [key: string]: any; diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 5db6d2c41e16..f2950dcb9629 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -332,11 +332,16 @@ export async function normalizeOptions( let indexHtmlOptions; // index can never have a value of `true` but in the schema it's of type `boolean`. if (typeof options.index !== 'boolean') { + let indexInput: string; let indexOutput: string; // The output file will be created within the configured output path if (typeof options.index === 'string') { - indexOutput = options.index; + indexInput = indexOutput = path.join(workspaceRoot, options.index); + } else if (typeof options.index === 'undefined') { + indexInput = path.join(projectSourceRoot, 'index.html'); + indexOutput = 'index.html'; } else { + indexInput = path.join(workspaceRoot, options.index.input); indexOutput = options.index.output || 'index.html'; } @@ -356,10 +361,7 @@ export async function normalizeOptions( : indexBaseName; indexHtmlOptions = { - input: path.join( - workspaceRoot, - typeof options.index === 'string' ? options.index : options.index.input, - ), + input: indexInput, output: indexOutput, insertionOrder: [ ['polyfills', true], diff --git a/packages/angular/build/src/builders/application/schema.json b/packages/angular/build/src/builders/application/schema.json index b34dabe49f7c..934bfe9390f4 100644 --- a/packages/angular/build/src/builders/application/schema.json +++ b/packages/angular/build/src/builders/application/schema.json @@ -616,7 +616,7 @@ } }, "additionalProperties": false, - "required": ["index", "browser", "tsConfig"], + "required": ["browser", "tsConfig"], "definitions": { "assetPattern": { "oneOf": [ diff --git a/packages/angular/build/src/builders/application/tests/options/index_spec.ts b/packages/angular/build/src/builders/application/tests/options/index_spec.ts index d3a5fe9e57d3..11228658bbce 100644 --- a/packages/angular/build/src/builders/application/tests/options/index_spec.ts +++ b/packages/angular/build/src/builders/application/tests/options/index_spec.ts @@ -62,6 +62,23 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { harness.expectFile('dist/browser/index.html').content.toContain('TEST_123'); }); + it('should use the the index.html file within the project source root when not present', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + index: undefined, + }); + + await harness.writeFile( + 'src/index.html', + 'TEST_123', + ); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBe(true); + harness.expectFile('dist/browser/index.html').content.toContain('TEST_123'); + }); + // TODO: Build needs to be fixed to not throw an unhandled exception for this case xit('should fail build when a string path to non-existent file', async () => { harness.useTarget('build', { From 1e137ca848839402bc214fbccdc04243862d01d0 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 2 Apr 2025 07:14:03 +0000 Subject: [PATCH 104/160] feat(@schematics/angular): add migration to update `moduleResolution` to `bundler` This commit adds a migration to update the TypeScript `moduleResolution` option to `'bundler'` for improved compatibility with modern package resolution. See: https://www.typescriptlang.org/tsconfig/#moduleResolution --- .../migrations/migration-collection.json | 5 + .../update-module-resolution/migration.ts | 60 +++++++++ .../migration_spec.ts | 118 ++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 packages/schematics/angular/migrations/update-module-resolution/migration.ts create mode 100644 packages/schematics/angular/migrations/update-module-resolution/migration_spec.ts diff --git a/packages/schematics/angular/migrations/migration-collection.json b/packages/schematics/angular/migrations/migration-collection.json index 4afb4facc7a3..a70c930290dd 100644 --- a/packages/schematics/angular/migrations/migration-collection.json +++ b/packages/schematics/angular/migrations/migration-collection.json @@ -10,6 +10,11 @@ "factory": "./replace-provide-server-routing/migration", "description": "Migrate 'provideServerRendering' to use 'withRoutes' and remove 'provideServerRouting' from '@angular/ssr'." }, + "update-module-resolution": { + "version": "20.0.0", + "factory": "./update-module-resolution/migration", + "description": "Update 'moduleResolution' to 'bundler' in TypeScript configurations. You can read more about this, here: https://www.typescriptlang.org/tsconfig/#moduleResolution" + }, "use-application-builder": { "version": "20.0.0", "factory": "./use-application-builder/migration", diff --git a/packages/schematics/angular/migrations/update-module-resolution/migration.ts b/packages/schematics/angular/migrations/update-module-resolution/migration.ts new file mode 100644 index 000000000000..ca0419a4eeab --- /dev/null +++ b/packages/schematics/angular/migrations/update-module-resolution/migration.ts @@ -0,0 +1,60 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { JsonObject } from '@angular-devkit/core'; +import { Rule, Tree } from '@angular-devkit/schematics'; +import { JSONFile } from '../../utility/json-file'; +import { allTargetOptions, allWorkspaceTargets, getWorkspace } from '../../utility/workspace'; + +export default function (): Rule { + return async (host) => { + const uniqueTsConfigs = new Set(); + + if (host.exists('tsconfig.json')) { + // Workspace level tsconfig + uniqueTsConfigs.add('tsconfig.json'); + } + + const workspace = await getWorkspace(host); + for (const [, target] of allWorkspaceTargets(workspace)) { + for (const [, opt] of allTargetOptions(target)) { + if (typeof opt?.tsConfig === 'string') { + uniqueTsConfigs.add(opt.tsConfig); + } + } + } + + for (const tsConfig of uniqueTsConfigs) { + if (host.exists(tsConfig)) { + updateModuleResolution(host, tsConfig); + } + } + }; +} + +function updateModuleResolution(host: Tree, tsConfigPath: string): void { + const json = new JSONFile(host, tsConfigPath); + const jsonPath = ['compilerOptions']; + const compilerOptions = json.get(jsonPath); + + if (compilerOptions && typeof compilerOptions === 'object') { + const { moduleResolution, module } = compilerOptions as JsonObject; + if (typeof moduleResolution !== 'string' || moduleResolution.toLowerCase() === 'bundler') { + return; + } + + if (typeof module === 'string' && module.toLowerCase() === 'preserve') { + return; + } + + json.modify(jsonPath, { + ...compilerOptions, + 'moduleResolution': 'bundler', + }); + } +} diff --git a/packages/schematics/angular/migrations/update-module-resolution/migration_spec.ts b/packages/schematics/angular/migrations/update-module-resolution/migration_spec.ts new file mode 100644 index 000000000000..53448e80b66a --- /dev/null +++ b/packages/schematics/angular/migrations/update-module-resolution/migration_spec.ts @@ -0,0 +1,118 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { isJsonObject } from '@angular-devkit/core'; +import { EmptyTree } from '@angular-devkit/schematics'; +import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; +import { Builders, ProjectType, WorkspaceSchema } from '../../utility/workspace-models'; + +describe('Migration to update moduleResolution', () => { + const schematicName = 'update-module-resolution'; + const schematicRunner = new SchematicTestRunner( + 'migrations', + require.resolve('../migration-collection.json'), + ); + + function createJsonFile(tree: UnitTestTree, filePath: string, content: {}): void { + const stringifiedContent = JSON.stringify(content, undefined, 2); + if (tree.exists(filePath)) { + tree.overwrite(filePath, stringifiedContent); + } else { + tree.create(filePath, stringifiedContent); + } + } + + function getCompilerOptionsValue(tree: UnitTestTree, filePath: string): Record { + const json = tree.readJson(filePath); + if (isJsonObject(json) && isJsonObject(json.compilerOptions)) { + return json.compilerOptions; + } + + throw new Error(`Cannot retrieve 'compilerOptions'.`); + } + + const angularConfig: WorkspaceSchema = { + version: 1, + projects: { + app: { + root: '', + sourceRoot: 'src', + projectType: ProjectType.Application, + prefix: 'app', + architect: { + build: { + builder: Builders.Browser, + options: { + tsConfig: 'src/tsconfig.app.json', + main: '', + polyfills: '', + }, + configurations: { + production: { + tsConfig: 'src/tsconfig.app.prod.json', + }, + }, + }, + test: { + builder: Builders.Karma, + options: { + karmaConfig: '', + tsConfig: 'src/tsconfig.spec.json', + }, + }, + }, + }, + }, + }; + + let tree: UnitTestTree; + beforeEach(() => { + tree = new UnitTestTree(new EmptyTree()); + const compilerOptions = { module: 'es2020', moduleResolution: 'node' }; + const configWithExtends = { extends: './tsconfig.json', compilerOptions }; + + // Workspace + createJsonFile(tree, 'angular.json', angularConfig); + createJsonFile(tree, 'tsconfig.json', { compilerOptions }); + + // Application + createJsonFile(tree, 'src/tsconfig.app.json', configWithExtends); + createJsonFile(tree, 'src/tsconfig.app.prod.json', configWithExtends); + createJsonFile(tree, 'src/tsconfig.spec.json', { compilerOptions }); + }); + + it(`should update moduleResolution to 'bundler' in workspace 'tsconfig.json'`, async () => { + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const compilerOptions = getCompilerOptionsValue(newTree, 'tsconfig.json'); + expect(compilerOptions).toEqual( + jasmine.objectContaining({ + moduleResolution: 'bundler', + }), + ); + }); + + it(`should update moduleResolution to 'bundler' in builder tsconfig`, async () => { + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const compilerOptions = getCompilerOptionsValue(newTree, 'src/tsconfig.spec.json'); + expect(compilerOptions).toEqual( + jasmine.objectContaining({ + moduleResolution: 'bundler', + }), + ); + }); + + it('should not update moduleResolution when module is preserve', async () => { + createJsonFile(tree, 'tsconfig.json', { + compilerOptions: { module: 'preserve', moduleResolution: 'node' }, + }); + + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const compilerOptions = getCompilerOptionsValue(newTree, 'tsconfig.json'); + expect(compilerOptions).toEqual({ module: 'preserve', moduleResolution: 'node' }); + }); +}); From 21235caa7f44edc996629d35da820e04193089f8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 2 Apr 2025 14:04:11 +0000 Subject: [PATCH 105/160] build: update angular --- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 146568dcada4..1a4bc568dd43 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#498c05a8d84f26a3c83d1f0c33e4e0ba583e8f9d", - "@angular/cdk": "github:angular/cdk-builds#30ce45e3929cbaf1d8bdca2b07fc2410b41464fe", - "@angular/common": "github:angular/common-builds#61148559e3c3c5b6f2f5c5cf2ebfc0792d5ba389", - "@angular/compiler": "github:angular/compiler-builds#e7598bdc94f2a13962fcd8d1e98241f36341902c", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#4cc305beee187edc92e05fa43bf3028ff3a31c8c", - "@angular/core": "github:angular/core-builds#a0c37965cbdcfd0a1466bdd74607417e4e36d12e", - "@angular/forms": "github:angular/forms-builds#71568f2fc1ea388485b85bab94d600d8c8b68d32", - "@angular/language-service": "github:angular/language-service-builds#cc471f8f051be03f29430226d60cecccc2e223e9", - "@angular/localize": "github:angular/localize-builds#1f903d5b252708bfcedaa4207959131a3c720e31", - "@angular/material": "github:angular/material-builds#a68cadf8671c02373554ca4d153134992bc02062", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#cd1419f2d3f7d01156fe0c40a454620e4ade8264", - "@angular/platform-browser": "github:angular/platform-browser-builds#08c91dd428e760fc3e836c29cf3802f9b0aeafed", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#3bbfb824090dfdbd249246d3717d38c7a96a800d", - "@angular/platform-server": "github:angular/platform-server-builds#f0e7cbf62ccdf9ed425c3bef3dfa471fbd50d94f", - "@angular/router": "github:angular/router-builds#92d300f4bfd4d6090ad52679fe08454dee327a20", - "@angular/service-worker": "github:angular/service-worker-builds#e193111963abede84d1a7c90a6f4cf73d3ba52c3" + "@angular/animations": "github:angular/animations-builds#64fa4922d728aa0a7466314c728f1d8d606c03ca", + "@angular/cdk": "github:angular/cdk-builds#0e88de0761895ac6c08a70543e0f4e0df8630cb1", + "@angular/common": "github:angular/common-builds#908459b711759514140d1028d8bdf9dac2cd6596", + "@angular/compiler": "github:angular/compiler-builds#b1d89ff7a9ba3d17184dff554798852dd7b89ff5", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#02b648dda74626be3f3ffd0a0cf63a3675701e8a", + "@angular/core": "github:angular/core-builds#df98069354af6627eaf0198891b0cefd189b7b70", + "@angular/forms": "github:angular/forms-builds#df47e6569ea8f942ec8ca5be2c9b6130d4b0f846", + "@angular/language-service": "github:angular/language-service-builds#1cd0e44ee3f91595653d66e8d73b13eddccf1845", + "@angular/localize": "github:angular/localize-builds#05c539915ca498b3381f79b1c1471aadce2d9b52", + "@angular/material": "github:angular/material-builds#f78d1e45f5838eb5b7383155837229cf8b4be481", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#8f906c668349ec7745a099eac82bc86995820ec1", + "@angular/platform-browser": "github:angular/platform-browser-builds#70477a4e1d87cdb166561f84e5eeca976a06c1b7", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0477f8ebe1deebc17227e91076f5e99f55a527d6", + "@angular/platform-server": "github:angular/platform-server-builds#b4fc7dc618d8d7d29a60ed11eb84bf13e083c716", + "@angular/router": "github:angular/router-builds#9a7e3e449288200290b0039f9a2fce079116fe23", + "@angular/service-worker": "github:angular/service-worker-builds#c0eb7172fd2fca36ccc741cb05db860d19dae982" } } From 34307e9169e52c85e4c670601d49f0a792dd86a2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 2 Apr 2025 06:04:20 +0000 Subject: [PATCH 106/160] build: update dependency @types/picomatch to v4 --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 85195eebfeca..461a59796399 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "@types/node": "^20.17.19", "@types/npm-package-arg": "^6.1.0", "@types/pacote": "^11.1.3", - "@types/picomatch": "^3.0.0", + "@types/picomatch": "^4.0.0", "@types/progress": "^2.0.3", "@types/resolve": "^1.17.1", "@types/semver": "^7.3.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 577670855784..87909c0e052f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,8 +132,8 @@ importers: specifier: ^11.1.3 version: 11.1.8 '@types/picomatch': - specifier: ^3.0.0 - version: 3.0.2 + specifier: ^4.0.0 + version: 4.0.0 '@types/progress': specifier: ^2.0.3 version: 2.0.7 @@ -2775,8 +2775,8 @@ packages: '@types/parse5@6.0.3': resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - '@types/picomatch@3.0.2': - resolution: {integrity: sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==} + '@types/picomatch@4.0.0': + resolution: {integrity: sha512-J1Bng+wlyEERWSgJQU1Pi0HObCLVcr994xT/M+1wcl/yNRTGBupsCxthgkdYG+GCOMaQH7iSVUY3LJVBBqG7MQ==} '@types/progress@2.0.7': resolution: {integrity: sha512-iadjw02vte8qWx7U0YM++EybBha2CQLPGu9iJ97whVgJUT5Zq9MjAPYUnbfRI2Kpehimf1QjFJYxD0t8nqzu5w==} @@ -10010,7 +10010,7 @@ snapshots: '@types/parse5@6.0.3': {} - '@types/picomatch@3.0.2': {} + '@types/picomatch@4.0.0': {} '@types/progress@2.0.7': dependencies: From b592b36f36f28613d245a6323db470653f409fa4 Mon Sep 17 00:00:00 2001 From: Jan Krems Date: Wed, 2 Apr 2025 09:37:14 -0700 Subject: [PATCH 107/160] docs: release notes for the v17.3.15 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82b5f7364a01..58606acf7d02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 17.3.15 (2025-04-02) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------- | +| [0525fec61](https://github.com/angular/angular-cli/commit/0525fec6183c2972b97a6ad4d57e89aaa478a2de) | fix | update vite to 5.4.16 due to a security issues | + + + # 20.0.0-next.3 (2025-03-26) From d3186c9a4b0099669c17568e4ab27a9d9bcf1ee7 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 2 Apr 2025 09:56:51 -0700 Subject: [PATCH 108/160] docs: release notes for the v18.2.17 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58606acf7d02..8dcfd60d0cc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 18.2.17 (2025-04-02) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------- | +| [247ceff7f](https://github.com/angular/angular-cli/commit/247ceff7f7d71901f51dbab1c1a5235d59e45847) | fix | update vite to 5.4.16 due to a security issues | + + + # 17.3.15 (2025-04-02) From d975b719a24a44a08c1f18f410352aa931ad54dd Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 2 Apr 2025 10:06:32 -0700 Subject: [PATCH 109/160] docs: release notes for the v19.2.6 release --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dcfd60d0cc4..f209826f4e1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ + + +# 19.2.6 (2025-04-02) + +### @angular-devkit/schematics + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------- | +| [e5aec562f](https://github.com/angular/angular-cli/commit/e5aec562feb0d293e88d560ea4ec0720e90dbc11) | fix | properly resolve relative schematics when executed from a nested directory | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------- | +| [76cfd364a](https://github.com/angular/angular-cli/commit/76cfd364a8b398153c09ce29c5672272ac0bce23) | fix | correctly handle `false` value in server option | +| [d69188c6b](https://github.com/angular/angular-cli/commit/d69188c6be2b851e3dfb84e2bd8d209062d7a283) | fix | update vite to 6.2.4 due to a security issues | + + + # 18.2.17 (2025-04-02) From 7225975d787fdca846a5f6947b415d8dbc8a3d9f Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 2 Apr 2025 13:04:57 -0700 Subject: [PATCH 110/160] release: cut the v20.0.0-next.4 release --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f209826f4e1c..94887110c181 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,29 @@ + + +# 20.0.0-next.4 (2025-04-02) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [1e137ca84](https://github.com/angular/angular-cli/commit/1e137ca848839402bc214fbccdc04243862d01d0) | feat | add migration to update `moduleResolution` to `bundler` | + +### @angular-devkit/schematics + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------- | +| [4955ee0aa](https://github.com/angular/angular-cli/commit/4955ee0aa31c1021b6369c29a250dd5a9a3f11cd) | fix | properly resolve relative schematics when executed from a nested directory | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | +| [d067cedf0](https://github.com/angular/angular-cli/commit/d067cedf05051e3a0f237d50306e1e4c881a0328) | feat | support custom resolution conditions with applications | +| [8a89438be](https://github.com/angular/angular-cli/commit/8a89438bef66e00d9795a5684c2b91dfdc102b3f) | fix | correctly handle `false` value in server option | +| [52fbffcd7](https://github.com/angular/angular-cli/commit/52fbffcd7bb129720a10e6bf865e4e3a01f939d6) | fix | warn and remove jsdom launcher when used with karma | + + + # 19.2.6 (2025-04-02) diff --git a/package.json b/package.json index 461a59796399..90fb409e6245 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "20.0.0-next.3", + "version": "20.0.0-next.4", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From bfdd8d5b8d53bf29ac691a4cbd3d24c5408d156f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 3 Apr 2025 05:04:11 +0000 Subject: [PATCH 111/160] build: update devinfra digest to 37d8497 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index f5537401bc1e..c2c31b0d7e52 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "78f80fa56155b444bf8a41d82cc16a33982ee4cf", + commit = "37d8497aae68a91201a69c715a8d8ca09d081aab", remote = "https://github.com/angular/dev-infra.git", ) From 322f6eca9806ff598a2a362d044b40bfb60576a7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:55:41 -0400 Subject: [PATCH 112/160] refactor(@schematics/angular): use `generateFromFiles` helper in more cases The class, directive, interface, and service schematics now more fully use the `generateFromFiles` helper. This reduces repeat code within each schematic. In some cases the schematic has been reduced to a single call to the helper. --- ...e => __name@dasherize__.__type__.spec.ts.template} | 0 ...mplate => __name@dasherize__.__type__.ts.template} | 0 packages/schematics/angular/class/index.ts | 2 -- packages/schematics/angular/directive/index.ts | 3 --- ...mplate => __name@dasherize__.__type__.ts.template} | 0 packages/schematics/angular/interface/index.ts | 2 -- ...me@dasherize__.__type@dasherize__.spec.ts.template | 0 .../__name@dasherize__.__type@dasherize__.ts.template | 0 packages/schematics/angular/service/index.ts | 11 +---------- .../angular/utility/add-declaration-to-ng-module.ts | 6 +++--- .../schematics/angular/utility/generate-from-files.ts | 3 +++ 11 files changed, 7 insertions(+), 20 deletions(-) rename packages/schematics/angular/class/files/{__name@dasherize____type__.spec.ts.template => __name@dasherize__.__type__.spec.ts.template} (100%) rename packages/schematics/angular/class/files/{__name@dasherize____type__.ts.template => __name@dasherize__.__type__.ts.template} (100%) rename packages/schematics/angular/interface/files/{__name@dasherize____type__.ts.template => __name@dasherize__.__type__.ts.template} (100%) rename packages/schematics/angular/service/files/{__name@dasherize@if-flat__ => }/__name@dasherize__.__type@dasherize__.spec.ts.template (100%) rename packages/schematics/angular/service/files/{__name@dasherize@if-flat__ => }/__name@dasherize__.__type@dasherize__.ts.template (100%) diff --git a/packages/schematics/angular/class/files/__name@dasherize____type__.spec.ts.template b/packages/schematics/angular/class/files/__name@dasherize__.__type__.spec.ts.template similarity index 100% rename from packages/schematics/angular/class/files/__name@dasherize____type__.spec.ts.template rename to packages/schematics/angular/class/files/__name@dasherize__.__type__.spec.ts.template diff --git a/packages/schematics/angular/class/files/__name@dasherize____type__.ts.template b/packages/schematics/angular/class/files/__name@dasherize__.__type__.ts.template similarity index 100% rename from packages/schematics/angular/class/files/__name@dasherize____type__.ts.template rename to packages/schematics/angular/class/files/__name@dasherize__.__type__.ts.template diff --git a/packages/schematics/angular/class/index.ts b/packages/schematics/angular/class/index.ts index d7d6953aabbd..865ec67ccf96 100644 --- a/packages/schematics/angular/class/index.ts +++ b/packages/schematics/angular/class/index.ts @@ -11,7 +11,5 @@ import { generateFromFiles } from '../utility/generate-from-files'; import { Schema as ClassOptions } from './schema'; export default function (options: ClassOptions): Rule { - options.type = options.type ? `.${options.type}` : ''; - return generateFromFiles(options); } diff --git a/packages/schematics/angular/directive/index.ts b/packages/schematics/angular/directive/index.ts index 0ef5e0c9ff8e..089ff94acf92 100644 --- a/packages/schematics/angular/directive/index.ts +++ b/packages/schematics/angular/directive/index.ts @@ -40,9 +40,6 @@ export default function (options: DirectiveOptions): Rule { options.module = findModuleFromOptions(host, options); - // Schematic templates require a defined type value - options.type ??= ''; - const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; diff --git a/packages/schematics/angular/interface/files/__name@dasherize____type__.ts.template b/packages/schematics/angular/interface/files/__name@dasherize__.__type__.ts.template similarity index 100% rename from packages/schematics/angular/interface/files/__name@dasherize____type__.ts.template rename to packages/schematics/angular/interface/files/__name@dasherize__.__type__.ts.template diff --git a/packages/schematics/angular/interface/index.ts b/packages/schematics/angular/interface/index.ts index 775a1017eb63..b04a5343fa39 100644 --- a/packages/schematics/angular/interface/index.ts +++ b/packages/schematics/angular/interface/index.ts @@ -11,7 +11,5 @@ import { generateFromFiles } from '../utility/generate-from-files'; import { Schema as InterfaceOptions } from './schema'; export default function (options: InterfaceOptions): Rule { - options.type = options.type ? `.${options.type}` : ''; - return generateFromFiles(options); } diff --git a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template b/packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.spec.ts.template similarity index 100% rename from packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template rename to packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.spec.ts.template diff --git a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template b/packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.ts.template similarity index 100% rename from packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template rename to packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.ts.template diff --git a/packages/schematics/angular/service/index.ts b/packages/schematics/angular/service/index.ts index f832af457822..640661a2addc 100644 --- a/packages/schematics/angular/service/index.ts +++ b/packages/schematics/angular/service/index.ts @@ -11,14 +11,5 @@ import { generateFromFiles } from '../utility/generate-from-files'; import { Schema as ServiceOptions } from './schema'; export default function (options: ServiceOptions): Rule { - // This schematic uses an older method to implement the flat option - const flat = options.flat; - options.flat = true; - - // Schematic templates require a defined type value - options.type ??= ''; - - return generateFromFiles(options, { - 'if-flat': (s: string) => (flat ? '' : s), - }); + return generateFromFiles(options); } diff --git a/packages/schematics/angular/utility/add-declaration-to-ng-module.ts b/packages/schematics/angular/utility/add-declaration-to-ng-module.ts index 10abc76c58a1..a6238f65dec1 100644 --- a/packages/schematics/angular/utility/add-declaration-to-ng-module.ts +++ b/packages/schematics/angular/utility/add-declaration-to-ng-module.ts @@ -37,11 +37,11 @@ export function addDeclarationToNgModule(options: DeclarationToNgModuleOptions): `/${options.path}/` + (options.flat ? '' : strings.dasherize(options.name) + '/') + strings.dasherize(options.name) + - (options.type ? '.' : '') + - strings.dasherize(options.type); + (options.type ? '.' + strings.dasherize(options.type) : ''); const importPath = buildRelativePath(modulePath, filePath); - const classifiedName = strings.classify(options.name) + strings.classify(options.type); + const classifiedName = + strings.classify(options.name) + (options.type ? strings.classify(options.type) : ''); const changes = addDeclarationToModule(source, modulePath, classifiedName, importPath); if (options.export) { diff --git a/packages/schematics/angular/utility/generate-from-files.ts b/packages/schematics/angular/utility/generate-from-files.ts index ac79813b7111..3f3547d5e6e2 100644 --- a/packages/schematics/angular/utility/generate-from-files.ts +++ b/packages/schematics/angular/utility/generate-from-files.ts @@ -45,6 +45,9 @@ export function generateFromFiles( options.prefix ??= ''; options.flat ??= true; + // Schematic templates require a defined type value + options.type ??= ''; + const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; From 6f913ad5e4d8ad9932ef2607851e3b8776e1af3a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 3 Apr 2025 10:43:10 -0400 Subject: [PATCH 113/160] fix(@angular/build): include component test metadata in development builds To support the usage of AOT with unit tests, development builds of applications will now include injected calls to the internal Angular `setClassMetadata` function. These calls add metadata to each component that can be leveraged by the `TestBed` to override component information. --- .../options/optimization-scripts_spec.ts | 42 +++++++++++++++++++ .../tools/esbuild/angular/compiler-plugin.ts | 4 +- .../tools/esbuild/compiler-plugin-options.ts | 2 + 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 packages/angular/build/src/builders/application/tests/options/optimization-scripts_spec.ts diff --git a/packages/angular/build/src/builders/application/tests/options/optimization-scripts_spec.ts b/packages/angular/build/src/builders/application/tests/options/optimization-scripts_spec.ts new file mode 100644 index 000000000000..013451467bb0 --- /dev/null +++ b/packages/angular/build/src/builders/application/tests/options/optimization-scripts_spec.ts @@ -0,0 +1,42 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { buildApplication } from '../../index'; +import { APPLICATION_BUILDER_INFO, BASE_OPTIONS, describeBuilder } from '../setup'; + +describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { + describe('Option: "optimization.scripts"', () => { + it(`should include 'setClassMetadata' calls when false`, async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + optimization: { + scripts: false, + }, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + harness.expectFile('dist/browser/main.js').content.toContain('setClassMetadata('); + }); + + it(`should not include 'setClassMetadata' calls when true`, async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + optimization: { + scripts: true, + }, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + harness.expectFile('dist/browser/main.js').content.not.toContain('setClassMetadata('); + }); + }); +}); diff --git a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts index 97444b7b4e66..8f58d2cb5978 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -35,6 +35,7 @@ export interface CompilerPluginOptions { sourcemap: boolean | 'external'; tsconfig: string; jit?: boolean; + includeTestMetadata?: boolean; advancedOptimizations?: boolean; thirdPartySourcemaps?: boolean; @@ -292,7 +293,6 @@ export function createCompilerPlugin( pluginOptions, preserveSymlinks, build.initialOptions.conditions, - build.initialOptions.absWorkingDir, ), ); shouldTsIgnoreJs = !initializationResult.compilerOptions.allowJs; @@ -623,7 +623,6 @@ function createCompilerOptionsTransformer( pluginOptions: CompilerPluginOptions, preserveSymlinks: boolean | undefined, customConditions: string[] | undefined, - absWorkingDir: string | undefined, ): Parameters[2] { return (compilerOptions) => { // target of 9 is ES2022 (using the number avoids an expensive import of typescript just for an enum) @@ -714,6 +713,7 @@ function createCompilerOptionsTransformer( preserveSymlinks, externalRuntimeStyles: pluginOptions.externalRuntimeStyles, _enableHmr: !!pluginOptions.templateUpdates, + supportTestBed: !!pluginOptions.includeTestMetadata, }; }; } diff --git a/packages/angular/build/src/tools/esbuild/compiler-plugin-options.ts b/packages/angular/build/src/tools/esbuild/compiler-plugin-options.ts index 355bbad228ff..04ce3ef94f4a 100644 --- a/packages/angular/build/src/tools/esbuild/compiler-plugin-options.ts +++ b/packages/angular/build/src/tools/esbuild/compiler-plugin-options.ts @@ -27,6 +27,7 @@ export function createCompilerPluginOptions( jit, externalRuntimeStyles, instrumentForCoverage, + optimizationOptions, } = options; const incremental = !!options.watch; @@ -43,5 +44,6 @@ export function createCompilerPluginOptions( externalRuntimeStyles, instrumentForCoverage, templateUpdates, + includeTestMetadata: !optimizationOptions.scripts, }; } From d8a5647e3c7cd04488ab26702fdf339be44f49b2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 3 Apr 2025 10:05:05 +0000 Subject: [PATCH 114/160] build: update all non-major dependencies Closes #30020 as a pr takeover --- .bazelrc | 2 + WORKSPACE | 6 +- packages/angular/build/package.json | 6 +- .../angular_devkit/build_angular/package.json | 6 +- pnpm-lock.yaml | 90 +++++++++---------- 5 files changed, 56 insertions(+), 54 deletions(-) diff --git a/.bazelrc b/.bazelrc index ec4ef6016357..00d2d33dfc37 100644 --- a/.bazelrc +++ b/.bazelrc @@ -4,6 +4,8 @@ build --action_env=NG_FORCE_TTY=false # Required by `rules_ts`. common --@aspect_rules_ts//ts:skipLibCheck=always common --@aspect_rules_ts//ts:default_to_tsc_transpiler +# TODO: remove this flag once we get to bazel version >7. +common --incompatible_merge_fixed_and_default_shell_env # Make TypeScript compilation fast, by keeping a few copies of the compiler # running as daemons, and cache SourceFile AST's to reduce parse time. diff --git a/WORKSPACE b/WORKSPACE index c2c31b0d7e52..bb35d2fc8fb5 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -199,9 +199,9 @@ npm_repositories() http_archive( name = "aspect_rules_ts", - sha256 = "d584e4bc80674d046938563678117d17df962fe105395f6b1efe2e8a248b8100", - strip_prefix = "rules_ts-3.5.1", - url = "https://github.com/aspect-build/rules_ts/releases/download/v3.5.1/rules_ts-v3.5.1.tar.gz", + sha256 = "fa5659a511f236b1ae6112258bff602fa20a40324b282734c841bc1e857797f3", + strip_prefix = "rules_ts-3.5.2", + url = "https://github.com/aspect-build/rules_ts/releases/download/v3.5.2/rules_ts-v3.5.2.tar.gz", ) load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 9c3ec9c89bce..392dfa7db6a9 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,11 +38,11 @@ "picomatch": "4.0.2", "piscina": "4.9.2", "rollup": "4.39.0", - "sass": "1.86.1", + "sass": "1.86.2", "semver": "7.7.1", "source-map-support": "0.5.21", "tinyglobby": "0.2.12", - "vite": "6.2.4", + "vite": "6.2.5", "watchpack": "2.4.2" }, "optionalDependencies": { @@ -52,7 +52,7 @@ "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", "less": "4.2.2", - "ng-packagr": "20.0.0-next.3", + "ng-packagr": "20.0.0-next.4", "postcss": "8.5.3", "rxjs": "7.8.2" }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 027eb0aae921..08f3472a9fe9 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -48,7 +48,7 @@ "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.86.1", + "sass": "1.86.2", "sass-loader": "16.0.5", "semver": "7.7.1", "source-map-loader": "5.0.0", @@ -68,8 +68,8 @@ "devDependencies": { "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.0", - "browser-sync": "3.0.3", - "ng-packagr": "20.0.0-next.3", + "browser-sync": "3.0.4", + "ng-packagr": "20.0.0-next.4", "undici": "7.7.0" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87909c0e052f..636d1786d252 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -357,7 +357,7 @@ importers: version: 5.1.8(@types/node@20.17.28) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -398,8 +398,8 @@ importers: specifier: 4.39.0 version: 4.39.0 sass: - specifier: 1.86.1 - version: 1.86.1 + specifier: 1.86.2 + version: 1.86.2 semver: specifier: 7.7.1 version: 7.7.1 @@ -410,8 +410,8 @@ importers: specifier: 0.2.12 version: 0.2.12 vite: - specifier: 6.2.4 - version: 6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1) + specifier: 6.2.5 + version: 6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -430,8 +430,8 @@ importers: specifier: 4.2.2 version: 4.2.2 ng-packagr: - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) postcss: specifier: 8.5.3 version: 8.5.3 @@ -616,7 +616,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -693,11 +693,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.86.1 - version: 1.86.1 + specifier: 1.86.2 + version: 1.86.2 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.86.1)(webpack@5.98.0(esbuild@0.25.2)) + version: 16.0.5(sass@1.86.2)(webpack@5.98.0(esbuild@0.25.2)) semver: specifier: 7.7.1 version: 7.7.1 @@ -743,11 +743,11 @@ importers: specifier: 0.20.0 version: 0.20.0 browser-sync: - specifier: 3.0.3 - version: 3.0.3 + specifier: 3.0.4 + version: 3.0.4 ng-packagr: - specifier: 20.0.0-next.3 - version: 20.0.0-next.3(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + specifier: 20.0.0-next.4 + version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: specifier: 7.7.0 version: 7.7.0 @@ -3522,15 +3522,15 @@ packages: browser-or-node@3.0.0: resolution: {integrity: sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==} - browser-sync-client@3.0.3: - resolution: {integrity: sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==} + browser-sync-client@3.0.4: + resolution: {integrity: sha512-+ew5ubXzGRKVjquBL3u6najS40TG7GxCdyBll0qSRc/n+JRV9gb/yDdRL1IAgRHqjnJTdqeBKKIQabjvjRSYRQ==} engines: {node: '>=8.0.0'} - browser-sync-ui@3.0.3: - resolution: {integrity: sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==} + browser-sync-ui@3.0.4: + resolution: {integrity: sha512-5Po3YARCZ/8yQHFzvrSjn8+hBUF7ZWac39SHsy8Tls+7tE62iq6pYWxpVU6aOOMAGD21RwFQhQeqmJPf70kHEQ==} - browser-sync@3.0.3: - resolution: {integrity: sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==} + browser-sync@3.0.4: + resolution: {integrity: sha512-mcYOIy4BW6sWSEnTSBjQwWsnbx2btZX78ajTTjdNfyC/EqQVcIe0nQR6894RNAMtvlfAnLaH9L2ka97zpvgenA==} engines: {node: '>= 8.0.0'} hasBin: true @@ -4149,8 +4149,8 @@ packages: resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==} engines: {node: '>= 4.0.0'} - eazy-logger@4.0.1: - resolution: {integrity: sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==} + eazy-logger@4.1.0: + resolution: {integrity: sha512-+mn7lRm+Zf1UT/YaH8WXtpU6PIV2iOjzP6jgKoiaq/VNrjYKp+OHZGe2znaLgDeFkw8cL9ffuaUm+nNnzcYyGw==} engines: {node: '>= 0.8.0'} ecc-jsbn@0.1.2: @@ -5942,8 +5942,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@20.0.0-next.3: - resolution: {integrity: sha512-yJp8gxzpLU8fw3dyk1QBnyHXeKlG+divhaZnwQlTT7+AsUZ3O51Im9ZRYNHrwf7keBY7zhZ4DXUvWI0xcok4UA==} + ng-packagr@20.0.0-next.4: + resolution: {integrity: sha512-QGAIIblAfenuJSDFOTgvRUAOzXZPIv8/Cq6QafEAWDD2WRMAkoc/ECY26W8gtsz6OJiNWEsLUwGCIOgkF6dpyQ==} engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: @@ -6878,8 +6878,8 @@ packages: webpack: optional: true - sass@1.86.1: - resolution: {integrity: sha512-Yaok4XELL1L9Im/ZUClKu//D2OP1rOljKj0Gf34a+GzLbMveOzL7CfqYo+JUa5Xt1nhTCW+OcKp/FtR7/iqj1w==} + sass@1.86.2: + resolution: {integrity: sha512-Rpfn0zAIDqvnSb2DihJTDFjbhqLHu91Wqac9rxontWk7R+2txcPjuujMqu1eeoezh5kAblVCS5EdFdyr0Jmu+w==} engines: {node: '>=14.0.0'} hasBin: true @@ -7660,8 +7660,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@6.2.4: - resolution: {integrity: sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==} + vite@6.2.5: + resolution: {integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -10394,9 +10394,9 @@ snapshots: minimatch: 7.4.6 semver: 7.7.1 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1))': dependencies: - vite: 6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1) '@web/browser-logs@0.4.1': dependencies: @@ -11040,13 +11040,13 @@ snapshots: browser-or-node@3.0.0: {} - browser-sync-client@3.0.3: + browser-sync-client@3.0.4: dependencies: etag: 1.8.1 fresh: 0.5.2 mitt: 1.2.0 - browser-sync-ui@3.0.3: + browser-sync-ui@3.0.4: dependencies: async-each-series: 0.1.1 chalk: 4.1.2 @@ -11060,10 +11060,10 @@ snapshots: - supports-color - utf-8-validate - browser-sync@3.0.3: + browser-sync@3.0.4: dependencies: - browser-sync-client: 3.0.3 - browser-sync-ui: 3.0.3 + browser-sync-client: 3.0.4 + browser-sync-ui: 3.0.4 bs-recipes: 1.3.4 chalk: 4.1.2 chokidar: 3.6.0 @@ -11071,7 +11071,7 @@ snapshots: connect-history-api-fallback: 1.6.0 dev-ip: 1.0.1 easy-extender: 2.3.4 - eazy-logger: 4.0.1 + eazy-logger: 4.1.0 etag: 1.8.1 fresh: 0.5.2 fs-extra: 3.0.1 @@ -11720,7 +11720,7 @@ snapshots: dependencies: lodash: 4.17.21 - eazy-logger@4.0.1: + eazy-logger@4.1.0: dependencies: chalk: 4.1.2 @@ -13827,7 +13827,7 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.3(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): + ng-packagr@20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) @@ -13849,7 +13849,7 @@ snapshots: postcss: 8.5.3 rollup-plugin-dts: 6.2.1(rollup@4.39.0)(typescript@5.8.2) rxjs: 7.8.2 - sass: 1.86.1 + sass: 1.86.2 tinyglobby: 0.2.12 tslib: 2.8.1 typescript: 5.8.2 @@ -14857,14 +14857,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.86.1)(webpack@5.98.0(esbuild@0.25.2)): + sass-loader@16.0.5(sass@1.86.2)(webpack@5.98.0(esbuild@0.25.2)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.86.1 + sass: 1.86.2 webpack: 5.98.0(esbuild@0.25.2) - sass@1.86.1: + sass@1.86.2: dependencies: chokidar: 4.0.3 immutable: 5.1.1 @@ -15854,7 +15854,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.4(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.1)(terser@5.39.0)(yaml@2.7.1): + vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 @@ -15864,7 +15864,7 @@ snapshots: fsevents: 2.3.3 jiti: 1.21.7 less: 4.2.2 - sass: 1.86.1 + sass: 1.86.2 terser: 5.39.0 yaml: 2.7.1 From e6083b57bb5b38db14264253095a9729738d22f2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 3 Apr 2025 15:47:39 -0400 Subject: [PATCH 115/160] fix(@schematics/angular): generate pipes with a dash type separator To align with the updated style guide, Angular v20 will generate pipes with file extension `pipe` type prefixed with a `-` separator instead of a `.` by default. Projects will automatically use this naming convention. Projects can however opt-out by setting the `typeSeparator` option to `.` for the pipe schematic. This can be done as a default in the `angular.json` or directly on the commandline via `--type-separator=.` when executing `ng generate`. As an example, `example.pipe.ts` will now be named `example-pipe.ts`. The TypeScript class name will continue to contain `Pipe` such as with `ExamplePipe`. --- ...e____typeSeparator__pipe.spec.ts.template} | 2 +- ...herize____typeSeparator__pipe.ts.template} | 0 packages/schematics/angular/pipe/index.ts | 28 +-------- .../schematics/angular/pipe/index_spec.ts | 58 +++++++++++++++---- packages/schematics/angular/pipe/schema.json | 5 ++ .../utility/add-declaration-to-ng-module.ts | 5 +- .../e2e/tests/generate/pipe/pipe-basic.ts | 6 +- 7 files changed, 64 insertions(+), 40 deletions(-) rename packages/schematics/angular/pipe/files/{__name@dasherize@if-flat__/__name@dasherize__.pipe.spec.ts.template => __name@dasherize____typeSeparator__pipe.spec.ts.template} (88%) rename packages/schematics/angular/pipe/files/{__name@dasherize@if-flat__/__name@dasherize__.pipe.ts.template => __name@dasherize____typeSeparator__pipe.ts.template} (100%) diff --git a/packages/schematics/angular/pipe/files/__name@dasherize@if-flat__/__name@dasherize__.pipe.spec.ts.template b/packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.spec.ts.template similarity index 88% rename from packages/schematics/angular/pipe/files/__name@dasherize@if-flat__/__name@dasherize__.pipe.spec.ts.template rename to packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.spec.ts.template index 04bcd1dda379..aba0bb94aa66 100644 --- a/packages/schematics/angular/pipe/files/__name@dasherize@if-flat__/__name@dasherize__.pipe.spec.ts.template +++ b/packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.spec.ts.template @@ -1,4 +1,4 @@ -import { <%= classify(name) %>Pipe } from './<%= dasherize(name) %>.pipe'; +import { <%= classify(name) %>Pipe } from './<%= dasherize(name) %><%= typeSeparator %>pipe'; describe('<%= classify(name) %>Pipe', () => { it('create an instance', () => { diff --git a/packages/schematics/angular/pipe/files/__name@dasherize@if-flat__/__name@dasherize__.pipe.ts.template b/packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.ts.template similarity index 100% rename from packages/schematics/angular/pipe/files/__name@dasherize@if-flat__/__name@dasherize__.pipe.ts.template rename to packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.ts.template diff --git a/packages/schematics/angular/pipe/index.ts b/packages/schematics/angular/pipe/index.ts index 10b871ebff32..8ecf154c6501 100644 --- a/packages/schematics/angular/pipe/index.ts +++ b/packages/schematics/angular/pipe/index.ts @@ -6,21 +6,10 @@ * found in the LICENSE file at https://angular.dev/license */ -import { - Rule, - Tree, - apply, - applyTemplates, - chain, - filter, - mergeWith, - move, - noop, - strings, - url, -} from '@angular-devkit/schematics'; +import { Rule, Tree, chain, strings } from '@angular-devkit/schematics'; import { addDeclarationToNgModule } from '../utility/add-declaration-to-ng-module'; import { findModuleFromOptions } from '../utility/find-module'; +import { generateFromFiles } from '../utility/generate-from-files'; import { parseName } from '../utility/parse-name'; import { validateClassName } from '../utility/validation'; import { createDefaultPath } from '../utility/workspace'; @@ -36,23 +25,12 @@ export default function (options: PipeOptions): Rule { options.path = parsedPath.path; validateClassName(strings.classify(options.name)); - const templateSource = apply(url('./files'), [ - options.skipTests ? filter((path) => !path.endsWith('.spec.ts.template')) : noop(), - applyTemplates({ - ...strings, - 'if-flat': (s: string) => (options.flat ? '' : s), - ...options, - }), - move(parsedPath.path), - ]); - return chain([ addDeclarationToNgModule({ type: 'pipe', - ...options, }), - mergeWith(templateSource), + generateFromFiles(options), ]); }; } diff --git a/packages/schematics/angular/pipe/index_spec.ts b/packages/schematics/angular/pipe/index_spec.ts index 6a0da2fbffb8..ade503998a94 100644 --- a/packages/schematics/angular/pipe/index_spec.ts +++ b/packages/schematics/angular/pipe/index_spec.ts @@ -56,6 +56,25 @@ describe('Pipe Schematic', () => { it('should create a pipe', async () => { const tree = await schematicRunner.runSchematic('pipe', defaultNonStandaloneOptions, appTree); const files = tree.files; + expect(files).toContain('/projects/bar/src/app/foo-pipe.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-pipe.ts'); + const moduleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); + expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo-pipe'/); + expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooPipe\r?\n/m); + const fileContent = tree.readContent('/projects/bar/src/app/foo-pipe.ts'); + expect(fileContent).toContain('transform(value: unknown, ...args: unknown[])'); + }); + + it('should use a `.` type separator when specified', async () => { + const tree = await schematicRunner.runSchematic( + 'pipe', + { + ...defaultNonStandaloneOptions, + typeSeparator: '.', + }, + appTree, + ); + const files = tree.files; expect(files).toContain('/projects/bar/src/app/foo.pipe.spec.ts'); expect(files).toContain('/projects/bar/src/app/foo.pipe.ts'); const moduleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); @@ -65,13 +84,32 @@ describe('Pipe Schematic', () => { expect(fileContent).toContain('transform(value: unknown, ...args: unknown[])'); }); + it('should use a `-` type separator when specified', async () => { + const tree = await schematicRunner.runSchematic( + 'pipe', + { + ...defaultNonStandaloneOptions, + typeSeparator: '-', + }, + appTree, + ); + const files = tree.files; + expect(files).toContain('/projects/bar/src/app/foo-pipe.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-pipe.ts'); + const moduleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); + expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo-pipe'/); + expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooPipe\r?\n/m); + const fileContent = tree.readContent('/projects/bar/src/app/foo-pipe.ts'); + expect(fileContent).toContain('transform(value: unknown, ...args: unknown[])'); + }); + it('should import into a specified module', async () => { const options = { ...defaultNonStandaloneOptions, module: 'app.module.ts' }; const tree = await schematicRunner.runSchematic('pipe', options, appTree); const appModule = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); - expect(appModule).toMatch(/import { FooPipe } from '.\/foo.pipe'/); + expect(appModule).toMatch(/import { FooPipe } from '.\/foo-pipe'/); }); it('should fail if specified module does not exist', async () => { @@ -94,7 +132,7 @@ describe('Pipe Schematic', () => { appTree = await schematicRunner.runSchematic('pipe', options, appTree); const content = appTree.readContent('/projects/bar/src/app/admin/module/module.module.ts'); - expect(content).toMatch(/import { FooPipe } from '\.\.\/\.\.\/foo.pipe'/); + expect(content).toMatch(/import { FooPipe } from '\.\.\/\.\.\/foo-pipe'/); }); it('should export the pipe', async () => { @@ -110,10 +148,10 @@ describe('Pipe Schematic', () => { const tree = await schematicRunner.runSchematic('pipe', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.pipe.spec.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo.pipe.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-pipe.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-pipe.ts'); const moduleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); - expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo\/foo.pipe'/); + expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo\/foo-pipe'/); expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooPipe\r?\n/m); }); @@ -124,7 +162,7 @@ describe('Pipe Schematic', () => { const options = { ...defaultNonStandaloneOptions, module: routingFileName }; const tree = await schematicRunner.runSchematic('pipe', options, newTree); const content = getFileContent(tree, routingModulePath); - expect(content).toMatch(/import { FooPipe } from '.\/foo.pipe/); + expect(content).toMatch(/import { FooPipe } from '.\/foo-pipe/); }); it('should respect the sourceRoot value', async () => { @@ -143,7 +181,7 @@ describe('Pipe Schematic', () => { '/projects/bar/custom/app/app.module.ts', ); appTree = await schematicRunner.runSchematic('pipe', defaultNonStandaloneOptions, appTree); - expect(appTree.files).toContain('/projects/bar/custom/app/foo.pipe.ts'); + expect(appTree.files).toContain('/projects/bar/custom/app/foo-pipe.ts'); }); }); @@ -155,7 +193,7 @@ describe('Pipe Schematic', () => { it('should create a standalone pipe', async () => { const tree = await schematicRunner.runSchematic('pipe', defaultOptions, appTree); const moduleContent = tree.readContent('/projects/bar/src/app/app.module.ts'); - const pipeContent = tree.readContent('/projects/bar/src/app/foo.pipe.ts'); + const pipeContent = tree.readContent('/projects/bar/src/app/foo-pipe.ts'); expect(pipeContent).not.toContain('standalone'); expect(pipeContent).toContain('class FooPipe'); expect(moduleContent).not.toContain('FooPipe'); @@ -166,8 +204,8 @@ describe('Pipe Schematic', () => { const tree = await schematicRunner.runSchematic('pipe', options, appTree); const files = tree.files; - expect(files).not.toContain('/projects/bar/src/app/foo.pipe.spec.ts'); - expect(files).toContain('/projects/bar/src/app/foo.pipe.ts'); + expect(files).not.toContain('/projects/bar/src/app/foo-pipe.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-pipe.ts'); }); it('should error when class name contains invalid characters', async () => { diff --git a/packages/schematics/angular/pipe/schema.json b/packages/schematics/angular/pipe/schema.json index 62dc7fa217b4..69b86cc9fe1c 100644 --- a/packages/schematics/angular/pipe/schema.json +++ b/packages/schematics/angular/pipe/schema.json @@ -61,6 +61,11 @@ "type": "boolean", "default": false, "description": "Automatically export the pipe from the specified NgModule, making it accessible to other modules in the application." + }, + "typeSeparator": { + "type": "string", + "default": "-", + "enum": ["-", "."] } }, "required": ["name", "project"] diff --git a/packages/schematics/angular/utility/add-declaration-to-ng-module.ts b/packages/schematics/angular/utility/add-declaration-to-ng-module.ts index a6238f65dec1..239b282902c7 100644 --- a/packages/schematics/angular/utility/add-declaration-to-ng-module.ts +++ b/packages/schematics/angular/utility/add-declaration-to-ng-module.ts @@ -19,6 +19,7 @@ export interface DeclarationToNgModuleOptions { flat?: boolean; export?: boolean; type: string; + typeSeparator?: '.' | '-'; skipImport?: boolean; standalone?: boolean; } @@ -30,6 +31,8 @@ export function addDeclarationToNgModule(options: DeclarationToNgModuleOptions): return host; } + const typeSeparator = options.typeSeparator ?? '.'; + const sourceText = host.readText(modulePath); const source = ts.createSourceFile(modulePath, sourceText, ts.ScriptTarget.Latest, true); @@ -37,7 +40,7 @@ export function addDeclarationToNgModule(options: DeclarationToNgModuleOptions): `/${options.path}/` + (options.flat ? '' : strings.dasherize(options.name) + '/') + strings.dasherize(options.name) + - (options.type ? '.' + strings.dasherize(options.type) : ''); + (options.type ? typeSeparator + strings.dasherize(options.type) : ''); const importPath = buildRelativePath(modulePath, filePath); const classifiedName = diff --git a/tests/legacy-cli/e2e/tests/generate/pipe/pipe-basic.ts b/tests/legacy-cli/e2e/tests/generate/pipe/pipe-basic.ts index 500a45eeed9e..2ddb3ff4225f 100644 --- a/tests/legacy-cli/e2e/tests/generate/pipe/pipe-basic.ts +++ b/tests/legacy-cli/e2e/tests/generate/pipe/pipe-basic.ts @@ -8,10 +8,10 @@ export default function () { const pipeDir = join('src', 'app'); return ( - ng('generate', 'pipe', 'test-pipe') + ng('generate', 'pipe', 'test') .then(() => expectFileToExist(pipeDir)) - .then(() => expectFileToExist(join(pipeDir, 'test-pipe.pipe.ts'))) - .then(() => expectFileToExist(join(pipeDir, 'test-pipe.pipe.spec.ts'))) + .then(() => expectFileToExist(join(pipeDir, 'test-pipe.ts'))) + .then(() => expectFileToExist(join(pipeDir, 'test-pipe.spec.ts'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) From 4d78fffb09f72de5b685cb04bb1057afa52f28d4 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 4 Apr 2025 08:48:07 +0000 Subject: [PATCH 116/160] refactor(@angular/build): provide a default for the ng-packagr project option This option is now considered optional --- goldens/public-api/angular/build/index.api.md | 2 +- .../build/src/builders/ng-packagr/builder.ts | 18 +++++++++++------- .../build/src/builders/ng-packagr/schema.json | 3 +-- packages/schematics/angular/library/index.ts | 3 --- .../schematics/angular/library/index_spec.ts | 1 - 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index bf620bfa15c4..6c0c2f19145b 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -166,7 +166,7 @@ export type ExtractI18nBuilderOptions = { // @public export type NgPackagrBuilderOptions = { poll?: number; - project: string; + project?: string; tsConfig?: string; watch?: boolean; }; diff --git a/packages/angular/build/src/builders/ng-packagr/builder.ts b/packages/angular/build/src/builders/ng-packagr/builder.ts index f2dc60ebf30c..24b606aeede1 100644 --- a/packages/angular/build/src/builders/ng-packagr/builder.ts +++ b/packages/angular/build/src/builders/ng-packagr/builder.ts @@ -30,7 +30,7 @@ export async function* execute( // Purge old build disk cache. await purgeStaleBuildCache(context); - const root = context.workspaceRoot; + const workspaceRoot = context.workspaceRoot; let packager; try { packager = (await import('ng-packagr')).ngPackagr(); @@ -47,18 +47,22 @@ export async function* execute( throw error; } - packager.forProject(resolve(root, options.project)); - - if (options.tsConfig) { - packager.withTsConfig(resolve(root, options.tsConfig)); - } - const projectName = context.target?.project; if (!projectName) { throw new Error('The builder requires a target.'); } const metadata = await context.getProjectMetadata(projectName); + const ngPackagrConfig = options.project + ? join(workspaceRoot, options.project) + : join(workspaceRoot, (metadata.root as string | undefined) ?? '', 'ng-package.json'); + + packager.forProject(ngPackagrConfig); + + if (options.tsConfig) { + packager.withTsConfig(resolve(workspaceRoot, options.tsConfig)); + } + const { enabled: cacheEnabled, path: cacheDirectory } = normalizeCacheOptions( metadata, context.workspaceRoot, diff --git a/packages/angular/build/src/builders/ng-packagr/schema.json b/packages/angular/build/src/builders/ng-packagr/schema.json index da76255f092a..0aa80ed6fe5f 100644 --- a/packages/angular/build/src/builders/ng-packagr/schema.json +++ b/packages/angular/build/src/builders/ng-packagr/schema.json @@ -22,6 +22,5 @@ "description": "Enable and define the file watching poll time period in milliseconds." } }, - "additionalProperties": false, - "required": ["project"] + "additionalProperties": false } diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index f59c8420619b..68f9f8f513c4 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -93,9 +93,6 @@ function addLibToWorkspaceFile( build: { builder: Builders.BuildNgPackagr, defaultConfiguration: 'production', - options: { - project: `${projectRoot}/ng-package.json`, - }, configurations: { production: { tsConfig: `${projectRoot}/tsconfig.lib.prod.json`, diff --git a/packages/schematics/angular/library/index_spec.ts b/packages/schematics/angular/library/index_spec.ts index 7787571472e5..62b9d0b87f47 100644 --- a/packages/schematics/angular/library/index_spec.ts +++ b/packages/schematics/angular/library/index_spec.ts @@ -361,7 +361,6 @@ describe('Library Schematic', () => { const project = config.projects.foo; expect(project.root).toEqual('foo'); const { options, configurations } = project.architect.build; - expect(options.project).toEqual('foo/ng-package.json'); expect(configurations.production.tsConfig).toEqual('foo/tsconfig.lib.prod.json'); const libTsConfig = getJsonFileContent(tree, '/foo/tsconfig.lib.json'); From 20a550981a895fef8015cf15839731e64a1ab41e Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Thu, 3 Apr 2025 17:38:43 -0700 Subject: [PATCH 117/160] test: reduce dependence on exact webpack optmizations --- .../build_angular/src/builders/browser/specs/svg_spec.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts index 92f5fd0cda7b..2be5e2737d43 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts @@ -57,7 +57,11 @@ describe('Browser Builder allow svg', () => { host.scopedSync().read(join(outputPath, 'main.js')), ); - expect(content).toContain('ɵɵnamespaceSVG'); + // Verify that the svg contents are present in the main bundle, + // e.g. as template instructions. + expect(content).toContain('Hello World'); + + // Verify that the svg contents are *not* present as a separate file. expect(host.scopedSync().exists(normalize('dist/app.component.svg'))).toBe( false, 'should not copy app.component.svg to dist', From 658cbd09d19fff8eea52bfca055cd4ed66687976 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 3 Apr 2025 17:04:37 +0000 Subject: [PATCH 118/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 46 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 38 +-- package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 303 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 11 files changed, 239 insertions(+), 238 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 5744988c6895..4e935e0e8602 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + - uses: angular/dev-infra/github-actions/branch-manager@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03e44c6ebc5f..49ec398cb4ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -59,11 +59,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,13 +85,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -108,9 +108,9 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: allow_windows_rbe: true google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} @@ -134,13 +134,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -158,13 +158,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -178,13 +178,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -214,11 +214,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 32f1e18bb34d..1d5501f5435f 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + - uses: angular/dev-infra/github-actions/commit-message-based-labels@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + - uses: angular/dev-infra/github-actions/post-approval-changes@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 78e76ca85a7d..e97a78e7a293 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + - uses: angular/dev-infra/github-actions/feature-request@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index b48e1c200fab..e96566e2510e 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index cd310acf6da5..e81bffaffb0f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/linting/licenses@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,9 +130,9 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 with: allow_windows_rbe: true - name: Run CLI E2E tests @@ -153,13 +153,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -176,12 +176,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b3b3466509babc50fd7f00b90e8bc607e7fe41aa + uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index 90fb409e6245..9f38f12e63f0 100644 --- a/package.json +++ b/package.json @@ -46,20 +46,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "20.0.0-next.4", - "@angular/cdk": "20.0.0-next.4", - "@angular/common": "20.0.0-next.4", - "@angular/compiler": "20.0.0-next.4", - "@angular/compiler-cli": "20.0.0-next.4", - "@angular/core": "20.0.0-next.4", - "@angular/forms": "20.0.0-next.4", - "@angular/localize": "20.0.0-next.4", - "@angular/material": "20.0.0-next.4", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#10732a822895b3d11cf2366f4e8dea25f1303c55", - "@angular/platform-browser": "20.0.0-next.4", - "@angular/platform-server": "20.0.0-next.4", - "@angular/router": "20.0.0-next.4", - "@angular/service-worker": "20.0.0-next.4", + "@angular/animations": "20.0.0-next.5", + "@angular/cdk": "20.0.0-next.5", + "@angular/common": "20.0.0-next.5", + "@angular/compiler": "20.0.0-next.5", + "@angular/compiler-cli": "20.0.0-next.5", + "@angular/core": "20.0.0-next.5", + "@angular/forms": "20.0.0-next.5", + "@angular/localize": "20.0.0-next.5", + "@angular/material": "20.0.0-next.5", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9128e88714212404ed17bbed46903547815a52ce", + "@angular/platform-browser": "20.0.0-next.5", + "@angular/platform-server": "20.0.0-next.5", + "@angular/router": "20.0.0-next.5", + "@angular/service-worker": "20.0.0-next.5", "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "8.0.3", "@eslint/compat": "1.2.8", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 0849b9237014..37cdb43ae389 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "20.0.0-next.4", - "@angular/compiler": "20.0.0-next.4", - "@angular/core": "20.0.0-next.4", - "@angular/platform-browser": "20.0.0-next.4", - "@angular/platform-server": "20.0.0-next.4", - "@angular/router": "20.0.0-next.4", + "@angular/common": "20.0.0-next.5", + "@angular/compiler": "20.0.0-next.5", + "@angular/core": "20.0.0-next.5", + "@angular/platform-browser": "20.0.0-next.5", + "@angular/platform-server": "20.0.0-next.5", + "@angular/router": "20.0.0-next.5", "@schematics/angular": "workspace:*" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 81e3d937513d..5616a4a7bb5e 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", - "@angular/compiler": "20.0.0-next.4", - "@angular/compiler-cli": "20.0.0-next.4", + "@angular/compiler": "20.0.0-next.5", + "@angular/compiler-cli": "20.0.0-next.5", "typescript": "5.8.2", "webpack": "5.98.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 636d1786d252..73970c8256bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,47 +15,47 @@ importers: .: devDependencies: '@angular/animations': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/cdk': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/common': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4 + specifier: 20.0.0-next.5 + version: 20.0.0-next.5 '@angular/compiler-cli': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) '@angular/core': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/localize': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(@angular/compiler@20.0.0-next.4) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(@angular/compiler@20.0.0-next.5) '@angular/material': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(oylo4douhe75q4m3y4wi7udlwy) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(zed5mlcqqzocvcjadwm7aowd6q) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#10732a822895b3d11cf2366f4e8dea25f1303c55 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/10732a822895b3d11cf2366f4e8dea25f1303c55(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#9128e88714212404ed17bbed46903547815a52ce + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9128e88714212404ed17bbed46903547815a52ce(encoding@0.1.13) '@angular/platform-browser': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-server': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.4)(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.5)(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/router': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.25.0 version: 1.25.0 @@ -431,7 +431,7 @@ importers: version: 4.2.2 ng-packagr: specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) postcss: specifier: 8.5.3 version: 8.5.3 @@ -512,23 +512,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4 + specifier: 20.0.0-next.5 + version: 20.0.0-next.5 '@angular/core': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-server': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.4)(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.5)(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/router': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -747,7 +747,7 @@ importers: version: 3.0.4 ng-packagr: specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: specifier: 7.7.0 version: 7.7.0 @@ -841,11 +841,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4 + specifier: 20.0.0-next.5 + version: 20.0.0-next.5 '@angular/compiler-cli': - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) typescript: specifier: 5.8.2 version: 5.8.2 @@ -883,117 +883,118 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@20.0.0-next.4': - resolution: {integrity: sha512-LZRI0bUtsFXVGcH/B+nLIpsgPQmqFGzQ9GjDUsW4ZweBIdmbagIygkExhWVAYO+NxOedezpb4xzOL+D66oJdsg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/animations@20.0.0-next.5': + resolution: {integrity: sha512-Ys3nI47vkOcVCcqAOT8Gozwl/4qpfNXo5EDLw5eKksiKlJTkpJtNu1Ljxk34hJwTTqdYYYOIgHxaJTTf5XdxuQ==} + engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/core': 20.0.0-next.4 + '@angular/common': 20.0.0-next.5 + '@angular/core': 20.0.0-next.5 - '@angular/cdk@20.0.0-next.4': - resolution: {integrity: sha512-gJnvo/EfiM+CNlAaAxUYEOWsdeFeEt+jodKNJVhnC0ARr+AKXPWxagzALSJB0bnEfaP+GwfkDPM1m/ONDXmsAw==} + '@angular/cdk@20.0.0-next.5': + resolution: {integrity: sha512-WVegI+c6+631wKRm7+EJA8jrlMYDETrBe0LyXhWJaQ7SXGGTnvnB3vTjrdDDh0kFl3rd42bAFDXB/Mh3jqB/nw==} peerDependencies: '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@20.0.0-next.4': - resolution: {integrity: sha512-Qh7+7lFcTGjYWmlb0HOp/rRxdKWq0BPxFkw6xHHaFszzJKDv24Doj2akVf3SV2gi9f2lzIR5PICJLw00zy4jtA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/common@20.0.0-next.5': + resolution: {integrity: sha512-SzbmSEP/5kiW30qd8S2x9YlMdjNsVUDpb/sjqwa8eOvLaUQf537tLBHx+l38d6mJcM9O1Blg0SA11vL88A/+qg==} + engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/core': 20.0.0-next.4 + '@angular/core': 20.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.0.0-next.4': - resolution: {integrity: sha512-BPBVbsWLzZe1sPl7/2rF8OLypLO0RDOSZeXarSb90JwlUX/pp6/85Cl566tPiqX7EWntnVhwlaMFiBmNTV5vrA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/compiler-cli@20.0.0-next.5': + resolution: {integrity: sha512-U0RIKvGVitFnMIhpl8M76NS5o3Fe57ppQ5BNGK34z8bQpXZ8MTZprcveIwv37B4+5oBu4W/+p3NdsStlbwXzNw==} + engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-next.4 + '@angular/compiler': 20.0.0-next.5 typescript: 5.8.2 - '@angular/compiler@20.0.0-next.4': - resolution: {integrity: sha512-1lQxn1L2yVtc631cwCf0ez50hqbmQXq562wJAaQmcJlfH2EoLcjtfP3xBCluEpI+Dpto7yxXA4Ms9FYPAk8HDA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/compiler@20.0.0-next.5': + resolution: {integrity: sha512-5ZW1A0XJmV8zG+gDxBWEv1b42KY/bb0Bnf5DZ7SsBAJddxoavoC+46A0TzjlxWwI77z46NsnEODf268XJacpjg==} + engines: {node: ^20.11.1 || >=22.11.0} - '@angular/core@20.0.0-next.4': - resolution: {integrity: sha512-LZIiGPsfyWxrlLcU1LQy3A+/OR6iyJ8Y40IsMnTFzZlQq96NomQM0AIksGjB2YyMM8z8VLBw5nvitVCbfVXn3w==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/core@20.0.0-next.5': + resolution: {integrity: sha512-xZ25MXR3ifoxX1RmV2G8DUU9k6V5wWC6WH+WtWR96W6Q1mW1pEt+XAI9NI6+szEFqTErlOTifGkiv1h+Nda8cQ==} + engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/compiler': 20.0.0-next.4 + '@angular/compiler': 20.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: '@angular/compiler': optional: true - '@angular/forms@20.0.0-next.4': - resolution: {integrity: sha512-FatZvZriwOZ2WocTlhyRqasXdgbFrUa04n6Wvvn9zNDLiF3expW534R6djmcZQ20ynmHQjeJxBPF42Ark/zeaQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/forms@20.0.0-next.5': + resolution: {integrity: sha512-zJ8puD5KWakFvk5LQ/FBz5jNvUATDtIuFZo48R80P2hkEbJgAY/rT+BhNFehyuQBEvXBFNsDjq9xWmQQwIj4zA==} + engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/common': 20.0.0-next.4 - '@angular/core': 20.0.0-next.4 - '@angular/platform-browser': 20.0.0-next.4 + '@angular/common': 20.0.0-next.5 + '@angular/core': 20.0.0-next.5 + '@angular/platform-browser': 20.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@20.0.0-next.4': - resolution: {integrity: sha512-uUXgFyVF4D4wJzZFUn1et3oc4ThlL72Dzc19Br5tNJkFgFDD73f/O+tJ+vrq0VqbDknpM2xxZcRSYoS7RGGKZw==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/localize@20.0.0-next.5': + resolution: {integrity: sha512-p6ccYeM3a/ACR150arcjyX0hcELZ94Ta8gZvXyU/p7f0S6kew8RyhEsAFhF3BwG5XMDD8ITtnbQoI5aGPC+zTg==} + engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-next.4 - '@angular/compiler-cli': 20.0.0-next.4 + '@angular/compiler': 20.0.0-next.5 + '@angular/compiler-cli': 20.0.0-next.5 - '@angular/material@20.0.0-next.4': - resolution: {integrity: sha512-ryvtEO22VWaW554Wf1thsqa/m2NzKaSTHBb0klEeGtb5oWgUOXm8Dn86pCDxrXsMnCOvp5GG+viMJVf0D5QDxA==} + '@angular/material@20.0.0-next.5': + resolution: {integrity: sha512-0Ey7PvoPO6KWpEiBuOB4ij3J/X3vjZOAr9g65QppsnRpjcKLR3DyR3JgGOhOEoiIrK7rUENGY1HjhZ5vXSJbbw==} peerDependencies: - '@angular/cdk': 20.0.0-next.4 + '@angular/cdk': 20.0.0-next.5 '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/forms': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/10732a822895b3d11cf2366f4e8dea25f1303c55': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/10732a822895b3d11cf2366f4e8dea25f1303c55} - version: 0.0.0-b3b3466509babc50fd7f00b90e8bc607e7fe41aa + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9128e88714212404ed17bbed46903547815a52ce': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9128e88714212404ed17bbed46903547815a52ce} + version: 0.0.0-6127cf117a8ed42945a7d8c09bc225851d58ef94 hasBin: true - '@angular/platform-browser@20.0.0-next.4': - resolution: {integrity: sha512-9nnloL9JD3UZbgdYpRsFynkX99BBJbFZ1f8XlhWC3b0Vwwmlq6dXH96fuWSlpbHwz7+NVooUZmWOx8GI/qK/Uw==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/platform-browser@20.0.0-next.5': + resolution: {integrity: sha512-SGIWQbOp/BIxJKMlNhA0qKm/uG4vX9CpCW1SgRVN2ly9MFlyVUsVYrJK83E9vfUH8rxO7IRQu5OmPDGGHfcxnA==} + engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/animations': 20.0.0-next.4 - '@angular/common': 20.0.0-next.4 - '@angular/core': 20.0.0-next.4 + '@angular/animations': 20.0.0-next.5 + '@angular/common': 20.0.0-next.5 + '@angular/core': 20.0.0-next.5 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@20.0.0-next.4': - resolution: {integrity: sha512-Iaszz4BBK882sNLo03cDV07P/qyDXmqax4N5f2QuoEx/GNDFSbePsRDJLshlB8MxnMClamEhOisZSVfwFZ+aKg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/platform-server@20.0.0-next.5': + resolution: {integrity: sha512-s0ssRKN8Oe2tY/rwcXZhtOxO4CGoJ7agBLVYiwCWEbf/jQMs2OZ9oZaebySFmSgvn1DnmkGAiNcLtxYNHW1ZDg==} + engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/common': 20.0.0-next.4 - '@angular/compiler': 20.0.0-next.4 - '@angular/core': 20.0.0-next.4 - '@angular/platform-browser': 20.0.0-next.4 + '@angular/common': 20.0.0-next.5 + '@angular/compiler': 20.0.0-next.5 + '@angular/core': 20.0.0-next.5 + '@angular/platform-browser': 20.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@20.0.0-next.4': - resolution: {integrity: sha512-cCAC6nsUTq9gWACqCZiLZUd42Fm4r4+7qQ4u52pFEe1Suhuh/7FqzBXXQAXrgoF1MiM903tmAdN7ZO5Yh5Wiig==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/router@20.0.0-next.5': + resolution: {integrity: sha512-MmdLZNPSY3VFN97K8LlQsHbcYLLPF3YhRnNdzGZcxJ0WkMbAB8V4o/udTctGAtSWjtJZJtNa3pCjLGw28D2W5Q==} + engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/common': 20.0.0-next.4 - '@angular/core': 20.0.0-next.4 - '@angular/platform-browser': 20.0.0-next.4 + '@angular/common': 20.0.0-next.5 + '@angular/core': 20.0.0-next.5 + '@angular/platform-browser': 20.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@20.0.0-next.4': - resolution: {integrity: sha512-IiCqnhlIOmjkD907HOgw7G+0soJpqhqtTja6DB/Mya+tOv7pjNRF/Fb4P5W0Qt2CDWVIEh6kQ9x4d19/U13NPg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/service-worker@20.0.0-next.5': + resolution: {integrity: sha512-wuSEDeCO/keoS0sxcW5HFOcfcZAWk02TJLp8WRGGm5MejKj/cY0gSl4gBTGqEvZ6uEkZkj1M67dNFB0NxWkhXA==} + engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: - '@angular/core': 20.0.0-next.4 + '@angular/core': 20.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 '@babel/code-frame@7.26.2': @@ -6596,7 +6597,6 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qjobs@1.2.0: @@ -8014,28 +8014,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/cdk@20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/cdk@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) parse5: 7.2.1 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2)': + '@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2)': dependencies: - '@angular/compiler': 20.0.0-next.4 + '@angular/compiler': 20.0.0-next.5 '@babel/core': 7.26.10 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 @@ -8048,30 +8049,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.0.0-next.4': + '@angular/compiler@20.0.0-next.5': dependencies: tslib: 2.8.1 - '@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)': + '@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 zone.js: 0.15.0 optionalDependencies: - '@angular/compiler': 20.0.0-next.4 + '@angular/compiler': 20.0.0-next.5 - '@angular/forms@20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/forms@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(@angular/compiler@20.0.0-next.4)': + '@angular/localize@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(@angular/compiler@20.0.0-next.5)': dependencies: - '@angular/compiler': 20.0.0-next.4 - '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) + '@angular/compiler': 20.0.0-next.5 + '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) '@babel/core': 7.26.10 '@types/babel__core': 7.20.5 tinyglobby: 0.2.12 @@ -8079,17 +8080,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@20.0.0-next.4(oylo4douhe75q4m3y4wi7udlwy)': + '@angular/material@20.0.0-next.5(zed5mlcqqzocvcjadwm7aowd6q)': dependencies: - '@angular/cdk': 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/forms': 20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) - '@angular/platform-browser': 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/cdk': 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/forms': 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + '@angular/platform-browser': 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/10732a822895b3d11cf2366f4e8dea25f1303c55(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9128e88714212404ed17bbed46903547815a52ce(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 @@ -8106,35 +8107,35 @@ snapshots: transitivePeerDependencies: - encoding - '@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/animations': 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/platform-server@20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.4)(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/platform-server@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.5)(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/compiler': 20.0.0-next.4 - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/compiler': 20.0.0-next.5 + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@20.0.0-next.4(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/router@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.4(@angular/animations@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@20.0.0-next.4(@angular/core@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/service-worker@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -13827,10 +13828,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.4(@angular/compiler-cli@20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): + ng-packagr@20.0.0-next.4(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 20.0.0-next.4(@angular/compiler@20.0.0-next.4)(typescript@5.8.2) + '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) '@rollup/plugin-json': 6.1.0(rollup@4.39.0) '@rollup/wasm-node': 4.38.0 ajv: 8.17.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 1a4bc568dd43..1d84ebb00b05 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#64fa4922d728aa0a7466314c728f1d8d606c03ca", - "@angular/cdk": "github:angular/cdk-builds#0e88de0761895ac6c08a70543e0f4e0df8630cb1", - "@angular/common": "github:angular/common-builds#908459b711759514140d1028d8bdf9dac2cd6596", - "@angular/compiler": "github:angular/compiler-builds#b1d89ff7a9ba3d17184dff554798852dd7b89ff5", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#02b648dda74626be3f3ffd0a0cf63a3675701e8a", - "@angular/core": "github:angular/core-builds#df98069354af6627eaf0198891b0cefd189b7b70", - "@angular/forms": "github:angular/forms-builds#df47e6569ea8f942ec8ca5be2c9b6130d4b0f846", - "@angular/language-service": "github:angular/language-service-builds#1cd0e44ee3f91595653d66e8d73b13eddccf1845", - "@angular/localize": "github:angular/localize-builds#05c539915ca498b3381f79b1c1471aadce2d9b52", - "@angular/material": "github:angular/material-builds#f78d1e45f5838eb5b7383155837229cf8b4be481", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#8f906c668349ec7745a099eac82bc86995820ec1", - "@angular/platform-browser": "github:angular/platform-browser-builds#70477a4e1d87cdb166561f84e5eeca976a06c1b7", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0477f8ebe1deebc17227e91076f5e99f55a527d6", - "@angular/platform-server": "github:angular/platform-server-builds#b4fc7dc618d8d7d29a60ed11eb84bf13e083c716", - "@angular/router": "github:angular/router-builds#9a7e3e449288200290b0039f9a2fce079116fe23", - "@angular/service-worker": "github:angular/service-worker-builds#c0eb7172fd2fca36ccc741cb05db860d19dae982" + "@angular/animations": "github:angular/animations-builds#8a700292573bcbe01c59a0c42ac7565654b7ce28", + "@angular/cdk": "github:angular/cdk-builds#4694005096eb41cbebe7efcb2d1fcc3f989d3a96", + "@angular/common": "github:angular/common-builds#ee4e32dca7e5d29b98d977d5d8403d34d5bfa135", + "@angular/compiler": "github:angular/compiler-builds#b3e3d45c07704eb6ae03cd3feaa7cf2acb63255b", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#0b09d6d8fc6b8fbbe3994146cc8cee296b2f0bbb", + "@angular/core": "github:angular/core-builds#23804029706baab2077651ba85b997afa53bb839", + "@angular/forms": "github:angular/forms-builds#83976ba1417aad07fd6b9a912b88658b1aeb45e2", + "@angular/language-service": "github:angular/language-service-builds#1d8ec45e1243a16aa664af5f43a558304d1d2346", + "@angular/localize": "github:angular/localize-builds#175179ca97ce7a8d0cc7bf01114ac7aafde48a19", + "@angular/material": "github:angular/material-builds#b386c6a6323a75491c0b5b463f3e20affef876b4", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a89d25cbcf66e12765bb7cd559f5b97486f69ae5", + "@angular/platform-browser": "github:angular/platform-browser-builds#607b0608f5200487246530abefcae5602c43a648", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#141db7773fc454bbbc1fd2d7ce9355f69c100c52", + "@angular/platform-server": "github:angular/platform-server-builds#d6e24e8cf99d89132dee24116985ad5fe5459888", + "@angular/router": "github:angular/router-builds#459c1737c0d9286f2f56e5d63394dd047557b3cc", + "@angular/service-worker": "github:angular/service-worker-builds#e8df3237446ded0a43fcea55135cc7ace9001668" } } From 2462abaf864f1e1e5b2de67d68549531ade89b7b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 4 Apr 2025 17:03:50 +0000 Subject: [PATCH 119/160] build: update all non-major dependencies --- WORKSPACE | 6 +- packages/angular/build/package.json | 6 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 4 +- .../schematics_cli/package.json | 2 +- pnpm-lock.yaml | 211 +++++++++--------- 6 files changed, 116 insertions(+), 115 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index bb35d2fc8fb5..d7efb9972f4f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -31,9 +31,9 @@ build_bazel_rules_nodejs_dependencies() http_archive( name = "aspect_rules_js", - sha256 = "05576ae674015b112b7c40c165735386eb9917affe8013e310d5602a093f2382", - strip_prefix = "rules_js-2.3.3", - url = "https://github.com/aspect-build/rules_js/releases/download/v2.3.3/rules_js-v2.3.3.tar.gz", + sha256 = "373e912bd986c38e54da82f15174984563866d14b60c5392e5b39e82b3bdf576", + strip_prefix = "rules_js-2.3.4", + url = "https://github.com/aspect-build/rules_js/releases/download/v2.3.4/rules_js-v2.3.4.tar.gz", ) load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 392dfa7db6a9..a6916102eb3e 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -23,7 +23,7 @@ "@babel/core": "7.26.10", "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", - "@inquirer/confirm": "5.1.8", + "@inquirer/confirm": "5.1.9", "@vitejs/plugin-basic-ssl": "2.0.0", "beasties": "0.2.0", "browserslist": "^4.23.0", @@ -38,7 +38,7 @@ "picomatch": "4.0.2", "piscina": "4.9.2", "rollup": "4.39.0", - "sass": "1.86.2", + "sass": "1.86.3", "semver": "7.7.1", "source-map-support": "0.5.21", "tinyglobby": "0.2.12", @@ -52,7 +52,7 @@ "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", "less": "4.2.2", - "ng-packagr": "20.0.0-next.4", + "ng-packagr": "20.0.0-next.5", "postcss": "8.5.3", "rxjs": "7.8.2" }, diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 569e1b0806af..805c07ae4bf7 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -25,7 +25,7 @@ "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.4.0", + "@inquirer/prompts": "7.4.1", "@listr2/prompt-adapter-inquirer": "2.0.18", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 08f3472a9fe9..6dd2af6b0854 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -48,7 +48,7 @@ "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.86.2", + "sass": "1.86.3", "sass-loader": "16.0.5", "semver": "7.7.1", "source-map-loader": "5.0.0", @@ -69,7 +69,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.0", "browser-sync": "3.0.4", - "ng-packagr": "20.0.0-next.4", + "ng-packagr": "20.0.0-next.5", "undici": "7.7.0" }, "peerDependencies": { diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index 551ea58ccf1b..83042dc525ff 100644 --- a/packages/angular_devkit/schematics_cli/package.json +++ b/packages/angular_devkit/schematics_cli/package.json @@ -18,7 +18,7 @@ "dependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.4.0", + "@inquirer/prompts": "7.4.1", "ansi-colors": "4.1.3", "yargs-parser": "21.1.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73970c8256bf..2aa40023f016 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -353,11 +353,11 @@ importers: specifier: 7.24.7 version: 7.24.7 '@inquirer/confirm': - specifier: 5.1.8 - version: 5.1.8(@types/node@20.17.28) + specifier: 5.1.9 + version: 5.1.9(@types/node@20.17.28) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -398,8 +398,8 @@ importers: specifier: 4.39.0 version: 4.39.0 sass: - specifier: 1.86.2 - version: 1.86.2 + specifier: 1.86.3 + version: 1.86.3 semver: specifier: 7.7.1 version: 7.7.1 @@ -411,7 +411,7 @@ importers: version: 0.2.12 vite: specifier: 6.2.5 - version: 6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1) + version: 6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -430,8 +430,8 @@ importers: specifier: 4.2.2 version: 4.2.2 ng-packagr: - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) postcss: specifier: 8.5.3 version: 8.5.3 @@ -451,11 +451,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/schematics '@inquirer/prompts': - specifier: 7.4.0 - version: 7.4.0(@types/node@20.17.28) + specifier: 7.4.1 + version: 7.4.1(@types/node@20.17.28) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.28)) + version: 2.0.18(@inquirer/prompts@7.4.1(@types/node@20.17.28)) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -616,7 +616,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -693,11 +693,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.86.2 - version: 1.86.2 + specifier: 1.86.3 + version: 1.86.3 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.86.2)(webpack@5.98.0(esbuild@0.25.2)) + version: 16.0.5(sass@1.86.3)(webpack@5.98.0(esbuild@0.25.2)) semver: specifier: 7.7.1 version: 7.7.1 @@ -746,8 +746,8 @@ importers: specifier: 3.0.4 version: 3.0.4 ng-packagr: - specifier: 20.0.0-next.4 - version: 20.0.0-next.4(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + specifier: 20.0.0-next.5 + version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) undici: specifier: 7.7.0 version: 7.7.0 @@ -826,8 +826,8 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../schematics '@inquirer/prompts': - specifier: 7.4.0 - version: 7.4.0(@types/node@20.17.28) + specifier: 7.4.1 + version: 7.4.1(@types/node@20.17.28) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1768,8 +1768,8 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} - '@inquirer/checkbox@4.1.4': - resolution: {integrity: sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==} + '@inquirer/checkbox@4.1.5': + resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1777,8 +1777,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.8': - resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} + '@inquirer/confirm@5.1.9': + resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1786,8 +1786,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.9': - resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==} + '@inquirer/core@10.1.10': + resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1795,8 +1795,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.9': - resolution: {integrity: sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw==} + '@inquirer/editor@4.2.10': + resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1804,8 +1804,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.11': - resolution: {integrity: sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA==} + '@inquirer/expand@4.0.12': + resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1817,8 +1817,8 @@ packages: resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} - '@inquirer/input@4.1.8': - resolution: {integrity: sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==} + '@inquirer/input@4.1.9': + resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1826,8 +1826,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.11': - resolution: {integrity: sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw==} + '@inquirer/number@3.0.12': + resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1835,8 +1835,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.11': - resolution: {integrity: sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg==} + '@inquirer/password@4.0.12': + resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1844,8 +1844,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.4.0': - resolution: {integrity: sha512-EZiJidQOT4O5PYtqnu1JbF0clv36oW2CviR66c7ma4LsupmmQlUwmdReGKRp456OWPWMz3PdrPiYg3aCk3op2w==} + '@inquirer/prompts@7.4.1': + resolution: {integrity: sha512-UlmM5FVOZF0gpoe1PT/jN4vk8JmpIWBlMvTL8M+hlvPmzN89K6z03+IFmyeu/oFCenwdwHDr2gky7nIGSEVvlA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1853,8 +1853,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.0.11': - resolution: {integrity: sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg==} + '@inquirer/rawlist@4.0.12': + resolution: {integrity: sha512-wNPJZy8Oc7RyGISPxp9/MpTOqX8lr0r+lCCWm7hQra+MDtYRgINv1hxw7R+vKP71Bu/3LszabxOodfV/uTfsaA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1862,8 +1862,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.11': - resolution: {integrity: sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew==} + '@inquirer/search@3.0.12': + resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1871,8 +1871,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.1.0': - resolution: {integrity: sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==} + '@inquirer/select@4.1.1': + resolution: {integrity: sha512-IUXzzTKVdiVNMA+2yUvPxWsSgOG4kfX93jOM4Zb5FgujeInotv5SPIJVeXQ+fO4xu7tW8VowFhdG5JRmmCyQ1Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1884,8 +1884,8 @@ packages: resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} engines: {node: '>=18'} - '@inquirer/type@3.0.5': - resolution: {integrity: sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==} + '@inquirer/type@3.0.6': + resolution: {integrity: sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -5943,8 +5943,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@20.0.0-next.4: - resolution: {integrity: sha512-QGAIIblAfenuJSDFOTgvRUAOzXZPIv8/Cq6QafEAWDD2WRMAkoc/ECY26W8gtsz6OJiNWEsLUwGCIOgkF6dpyQ==} + ng-packagr@20.0.0-next.5: + resolution: {integrity: sha512-fWG2bU6NupYTDxlB2rklvKfdso/hZq/UH5iU8HncZ9yzRvDUQmUIBg2NvBI72ZX1Jg0+/d65OyVns23l/38rnw==} engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: @@ -6597,6 +6597,7 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qjobs@1.2.0: @@ -6878,8 +6879,8 @@ packages: webpack: optional: true - sass@1.86.2: - resolution: {integrity: sha512-Rpfn0zAIDqvnSb2DihJTDFjbhqLHu91Wqac9rxontWk7R+2txcPjuujMqu1eeoezh5kAblVCS5EdFdyr0Jmu+w==} + sass@1.86.3: + resolution: {integrity: sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==} engines: {node: '>=14.0.0'} hasBin: true @@ -9037,27 +9038,27 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/checkbox@4.1.4(@types/node@20.17.28)': + '@inquirer/checkbox@4.1.5(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 20.17.28 - '@inquirer/confirm@5.1.8(@types/node@20.17.28)': + '@inquirer/confirm@5.1.9(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) optionalDependencies: '@types/node': 20.17.28 - '@inquirer/core@10.1.9(@types/node@20.17.28)': + '@inquirer/core@10.1.10(@types/node@20.17.28)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -9067,83 +9068,83 @@ snapshots: optionalDependencies: '@types/node': 20.17.28 - '@inquirer/editor@4.2.9(@types/node@20.17.28)': + '@inquirer/editor@4.2.10(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) external-editor: 3.1.0 optionalDependencies: '@types/node': 20.17.28 - '@inquirer/expand@4.0.11(@types/node@20.17.28)': + '@inquirer/expand@4.0.12(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 20.17.28 '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.8(@types/node@20.17.28)': + '@inquirer/input@4.1.9(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) optionalDependencies: '@types/node': 20.17.28 - '@inquirer/number@3.0.11(@types/node@20.17.28)': + '@inquirer/number@3.0.12(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) optionalDependencies: '@types/node': 20.17.28 - '@inquirer/password@4.0.11(@types/node@20.17.28)': + '@inquirer/password@4.0.12(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) ansi-escapes: 4.3.2 optionalDependencies: '@types/node': 20.17.28 - '@inquirer/prompts@7.4.0(@types/node@20.17.28)': - dependencies: - '@inquirer/checkbox': 4.1.4(@types/node@20.17.28) - '@inquirer/confirm': 5.1.8(@types/node@20.17.28) - '@inquirer/editor': 4.2.9(@types/node@20.17.28) - '@inquirer/expand': 4.0.11(@types/node@20.17.28) - '@inquirer/input': 4.1.8(@types/node@20.17.28) - '@inquirer/number': 3.0.11(@types/node@20.17.28) - '@inquirer/password': 4.0.11(@types/node@20.17.28) - '@inquirer/rawlist': 4.0.11(@types/node@20.17.28) - '@inquirer/search': 3.0.11(@types/node@20.17.28) - '@inquirer/select': 4.1.0(@types/node@20.17.28) + '@inquirer/prompts@7.4.1(@types/node@20.17.28)': + dependencies: + '@inquirer/checkbox': 4.1.5(@types/node@20.17.28) + '@inquirer/confirm': 5.1.9(@types/node@20.17.28) + '@inquirer/editor': 4.2.10(@types/node@20.17.28) + '@inquirer/expand': 4.0.12(@types/node@20.17.28) + '@inquirer/input': 4.1.9(@types/node@20.17.28) + '@inquirer/number': 3.0.12(@types/node@20.17.28) + '@inquirer/password': 4.0.12(@types/node@20.17.28) + '@inquirer/rawlist': 4.0.12(@types/node@20.17.28) + '@inquirer/search': 3.0.12(@types/node@20.17.28) + '@inquirer/select': 4.1.1(@types/node@20.17.28) optionalDependencies: '@types/node': 20.17.28 - '@inquirer/rawlist@4.0.11(@types/node@20.17.28)': + '@inquirer/rawlist@4.0.12(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 20.17.28 - '@inquirer/search@3.0.11(@types/node@20.17.28)': + '@inquirer/search@3.0.12(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 20.17.28 - '@inquirer/select@4.1.0(@types/node@20.17.28)': + '@inquirer/select@4.1.1(@types/node@20.17.28)': dependencies: - '@inquirer/core': 10.1.9(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.28) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.28) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: @@ -9153,7 +9154,7 @@ snapshots: dependencies: mute-stream: 1.0.0 - '@inquirer/type@3.0.5(@types/node@20.17.28)': + '@inquirer/type@3.0.6(@types/node@20.17.28)': optionalDependencies: '@types/node': 20.17.28 @@ -9219,9 +9220,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.0(@types/node@20.17.28))': + '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.1(@types/node@20.17.28))': dependencies: - '@inquirer/prompts': 7.4.0(@types/node@20.17.28) + '@inquirer/prompts': 7.4.1(@types/node@20.17.28) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.2.6': @@ -10395,9 +10396,9 @@ snapshots: minimatch: 7.4.6 semver: 7.7.1 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': dependencies: - vite: 6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) '@web/browser-logs@0.4.1': dependencies: @@ -13828,7 +13829,7 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.4(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): + ng-packagr@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) @@ -13850,7 +13851,7 @@ snapshots: postcss: 8.5.3 rollup-plugin-dts: 6.2.1(rollup@4.39.0)(typescript@5.8.2) rxjs: 7.8.2 - sass: 1.86.2 + sass: 1.86.3 tinyglobby: 0.2.12 tslib: 2.8.1 typescript: 5.8.2 @@ -14858,14 +14859,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.86.2)(webpack@5.98.0(esbuild@0.25.2)): + sass-loader@16.0.5(sass@1.86.3)(webpack@5.98.0(esbuild@0.25.2)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.86.2 + sass: 1.86.3 webpack: 5.98.0(esbuild@0.25.2) - sass@1.86.2: + sass@1.86.3: dependencies: chokidar: 4.0.3 immutable: 5.1.1 @@ -15855,7 +15856,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.2)(terser@5.39.0)(yaml@2.7.1): + vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 @@ -15865,7 +15866,7 @@ snapshots: fsevents: 2.3.3 jiti: 1.21.7 less: 4.2.2 - sass: 1.86.2 + sass: 1.86.3 terser: 5.39.0 yaml: 2.7.1 From bb3c0273ca59529fb3a746d0a715a32b60a5c422 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 4 Apr 2025 17:03:40 +0000 Subject: [PATCH 120/160] build: update devinfra digest to e4bf37a --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index d7efb9972f4f..d3c8175a6e21 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "37d8497aae68a91201a69c715a8d8ca09d081aab", + commit = "e4bf37af223483ce00f9316d227fd62cd744dc4b", remote = "https://github.com/angular/dev-infra.git", ) From 5fc5951440c9306c4349fa3f8dbcb1b584441fe8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:37:24 -0400 Subject: [PATCH 121/160] fix(@schematics/angular): generate guards with a dash type separator To align with the updated style guide, Angular v20 will generate guards with file extension `guard` type prefixed with a `-` separator instead of a `.` by default. Projects will automatically use this naming convention. Projects can however opt-out by setting the `typeSeparator` option to `.` for the guard schematic. This can be done as a default in the `angular.json` or directly on the commandline via `--type-separator=.` when executing `ng generate`. As an example, `example.guard.ts` will now be named `example-guard.ts`. The TypeScript declaration will continue to contain `Guard` such as with `ExampleGuard`. --- ...____typeSeparator__guard.spec.ts.template} | 2 +- ...erize____typeSeparator__guard.ts.template} | 0 .../schematics/angular/guard/index_spec.ts | 52 +++++++++++++------ packages/schematics/angular/guard/schema.json | 5 ++ ...____typeSeparator__guard.spec.ts.template} | 2 +- ...erize____typeSeparator__guard.ts.template} | 0 .../e2e/tests/generate/guard/guard-basic.ts | 11 ++-- .../tests/generate/guard/guard-implements.ts | 6 +-- .../guard/guard-multiple-implements.ts | 6 +-- 9 files changed, 54 insertions(+), 30 deletions(-) rename packages/schematics/angular/guard/implements-files/{__name@dasherize__.guard.spec.ts.template => __name@dasherize____typeSeparator__guard.spec.ts.template} (92%) rename packages/schematics/angular/guard/implements-files/{__name@dasherize__.guard.ts.template => __name@dasherize____typeSeparator__guard.ts.template} (100%) rename packages/schematics/angular/guard/type-files/{__name@dasherize__.guard.spec.ts.template => __name@dasherize____typeSeparator__guard.spec.ts.template} (94%) rename packages/schematics/angular/guard/type-files/{__name@dasherize__.guard.ts.template => __name@dasherize____typeSeparator__guard.ts.template} (100%) diff --git a/packages/schematics/angular/guard/implements-files/__name@dasherize__.guard.spec.ts.template b/packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.spec.ts.template similarity index 92% rename from packages/schematics/angular/guard/implements-files/__name@dasherize__.guard.spec.ts.template rename to packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.spec.ts.template index 0ce1ff44c67c..fefa3afee2b0 100644 --- a/packages/schematics/angular/guard/implements-files/__name@dasherize__.guard.spec.ts.template +++ b/packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.spec.ts.template @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { <%= classify(name) %>Guard } from './<%= dasherize(name) %>.guard'; +import { <%= classify(name) %>Guard } from './<%= dasherize(name) %><%= typeSeparator %>guard'; describe('<%= classify(name) %>Guard', () => { let guard: <%= classify(name) %>Guard; diff --git a/packages/schematics/angular/guard/implements-files/__name@dasherize__.guard.ts.template b/packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.ts.template similarity index 100% rename from packages/schematics/angular/guard/implements-files/__name@dasherize__.guard.ts.template rename to packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.ts.template diff --git a/packages/schematics/angular/guard/index_spec.ts b/packages/schematics/angular/guard/index_spec.ts index 05abf2a525ad..3b0c0da2059b 100644 --- a/packages/schematics/angular/guard/index_spec.ts +++ b/packages/schematics/angular/guard/index_spec.ts @@ -51,8 +51,8 @@ describe('Guard Schematic', () => { ); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo.guard.spec.ts'); - expect(files).toContain('/projects/bar/src/app/foo.guard.ts'); + expect(files).toContain('/projects/bar/src/app/foo-guard.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-guard.ts'); }); it('should respect the skipTests flag', async () => { @@ -60,8 +60,30 @@ describe('Guard Schematic', () => { const tree = await schematicRunner.runSchematic('guard', options, appTree); const files = tree.files; - expect(files).not.toContain('/projects/bar/src/app/foo.guard.spec.ts'); + expect(files).not.toContain('/projects/bar/src/app/foo-guard.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-guard.ts'); + }); + + it('should use a `.` type separator when specified', async () => { + const options = { ...defaultOptions, typeSeparator: '.' }; + + const tree = await schematicRunner.runSchematic('guard', options, appTree); + const files = tree.files; + expect(files).toContain('/projects/bar/src/app/foo.guard.spec.ts'); expect(files).toContain('/projects/bar/src/app/foo.guard.ts'); + const specContent = tree.readContent('/projects/bar/src/app/foo.guard.spec.ts'); + expect(specContent).toContain(`'./foo.guard'`); + }); + + it('should use a `-` type separator when specified', async () => { + const options = { ...defaultOptions, typeSeparator: '-' }; + + const tree = await schematicRunner.runSchematic('guard', options, appTree); + const files = tree.files; + expect(files).toContain('/projects/bar/src/app/foo-guard.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-guard.ts'); + const specContent = tree.readContent('/projects/bar/src/app/foo-guard.spec.ts'); + expect(specContent).toContain(`'./foo-guard'`); }); it('should respect the flat flag', async () => { @@ -69,8 +91,8 @@ describe('Guard Schematic', () => { const tree = await schematicRunner.runSchematic('guard', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.guard.spec.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo.guard.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-guard.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-guard.ts'); }); it('should respect the sourceRoot value', async () => { @@ -78,13 +100,13 @@ describe('Guard Schematic', () => { config.projects.bar.sourceRoot = 'projects/bar/custom'; appTree.overwrite('/angular.json', JSON.stringify(config, null, 2)); appTree = await schematicRunner.runSchematic('guard', defaultOptions, appTree); - expect(appTree.files).toContain('/projects/bar/custom/app/foo.guard.ts'); + expect(appTree.files).toContain('/projects/bar/custom/app/foo-guard.ts'); }); it('should respect the implements value', async () => { const options = { ...defaultOptions, implements: ['CanActivate'], functional: false }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.ts'); expect(fileString).toContain('CanActivate'); expect(fileString).toContain('canActivate'); expect(fileString).not.toContain('CanActivateChild'); @@ -96,7 +118,7 @@ describe('Guard Schematic', () => { it('should generate a functional guard by default', async () => { const options = { ...defaultOptions, implements: ['CanActivate'] }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.ts'); expect(fileString).toContain('export const fooGuard: CanActivateFn = (route, state) => {'); expect(fileString).not.toContain('CanActivateChild'); expect(fileString).not.toContain('canActivateChild'); @@ -107,7 +129,7 @@ describe('Guard Schematic', () => { it('should generate a helper function to execute the guard in a test', async () => { const options = { ...defaultOptions, implements: ['CanActivate'] }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.spec.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.spec.ts'); expect(fileString).toContain('const executeGuard: CanActivateFn = (...guardParameters) => '); expect(fileString).toContain( 'TestBed.runInInjectionContext(() => fooGuard(...guardParameters));', @@ -117,7 +139,7 @@ describe('Guard Schematic', () => { it('should generate CanDeactivateFn with unknown functional guard', async () => { const options = { ...defaultOptions, implements: ['CanDeactivate'] }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.ts'); expect(fileString).toContain( 'export const fooGuard: CanDeactivateFn = ' + '(component, currentRoute, currentState, nextState) => {', @@ -128,7 +150,7 @@ describe('Guard Schematic', () => { const implementationOptions = ['CanActivate', 'CanDeactivate', 'CanActivateChild']; const options = { ...defaultOptions, implements: implementationOptions, functional: false }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.ts'); // Should contain all implementations implementationOptions.forEach((implementation: string) => { @@ -142,7 +164,7 @@ describe('Guard Schematic', () => { const implementationOptions = ['CanMatch']; const options = { ...defaultOptions, implements: implementationOptions, functional: false }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.ts'); const expectedImports = `import { CanMatch, GuardResult, MaybeAsync, Route, subPath } from '@angular/router';`; expect(fileString).toContain(expectedImports); @@ -152,7 +174,7 @@ describe('Guard Schematic', () => { const implementationOptions = ['CanActivate']; const options = { ...defaultOptions, implements: implementationOptions, functional: false }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.ts'); const expectedImports = `import { ActivatedRouteSnapshot, CanActivate, GuardResult, ` + `MaybeAsync, RouterStateSnapshot } from '@angular/router';`; @@ -163,7 +185,7 @@ describe('Guard Schematic', () => { it('should add correct imports based on canActivate functional guard', async () => { const options = { ...defaultOptions, implements: ['CanActivate'] }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.ts'); const expectedImports = `import { CanActivateFn } from '@angular/router';`; expect(fileString).toContain(expectedImports); @@ -173,7 +195,7 @@ describe('Guard Schematic', () => { const implementationOptions = ['CanActivate', 'CanMatch', 'CanActivateChild']; const options = { ...defaultOptions, implements: implementationOptions, functional: false }; const tree = await schematicRunner.runSchematic('guard', options, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-guard.ts'); const expectedImports = `import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, CanMatch, GuardResult, ` + `MaybeAsync, Route, RouterStateSnapshot, subPath } from '@angular/router';`; diff --git a/packages/schematics/angular/guard/schema.json b/packages/schematics/angular/guard/schema.json index 0f6952c459f6..feb6385e356a 100644 --- a/packages/schematics/angular/guard/schema.json +++ b/packages/schematics/angular/guard/schema.json @@ -58,6 +58,11 @@ }, "default": ["CanActivate"], "x-prompt": "Which type of guard would you like to create?" + }, + "typeSeparator": { + "type": "string", + "default": "-", + "enum": ["-", "."] } }, "required": ["name", "project"] diff --git a/packages/schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template b/packages/schematics/angular/guard/type-files/__name@dasherize____typeSeparator__guard.spec.ts.template similarity index 94% rename from packages/schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template rename to packages/schematics/angular/guard/type-files/__name@dasherize____typeSeparator__guard.spec.ts.template index d068b5f353d7..9bad0a553eb4 100644 --- a/packages/schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template +++ b/packages/schematics/angular/guard/type-files/__name@dasherize____typeSeparator__guard.spec.ts.template @@ -1,7 +1,7 @@ import { TestBed } from '@angular/core/testing'; import { <%= guardType %> } from '@angular/router'; -import { <%= camelize(name) %>Guard } from './<%= dasherize(name) %>.guard'; +import { <%= camelize(name) %>Guard } from './<%= dasherize(name) %><%= typeSeparator %>guard'; describe('<%= camelize(name) %>Guard', () => { const executeGuard: <%= guardType %><% if (guardType === 'CanDeactivateFn') { %><% } %> = (...guardParameters) => diff --git a/packages/schematics/angular/guard/type-files/__name@dasherize__.guard.ts.template b/packages/schematics/angular/guard/type-files/__name@dasherize____typeSeparator__guard.ts.template similarity index 100% rename from packages/schematics/angular/guard/type-files/__name@dasherize__.guard.ts.template rename to packages/schematics/angular/guard/type-files/__name@dasherize____typeSeparator__guard.ts.template diff --git a/tests/legacy-cli/e2e/tests/generate/guard/guard-basic.ts b/tests/legacy-cli/e2e/tests/generate/guard/guard-basic.ts index 6b2a9717f328..ca4e9a547ff6 100644 --- a/tests/legacy-cli/e2e/tests/generate/guard/guard-basic.ts +++ b/tests/legacy-cli/e2e/tests/generate/guard/guard-basic.ts @@ -6,13 +6,10 @@ export default async function () { // Does not create a sub directory. const guardDir = join('src', 'app'); - await ng('generate', 'guard', 'test-guard'); + await ng('generate', 'guard', 'test'); await expectFileToExist(guardDir); - await expectFileToExist(join(guardDir, 'test-guard.guard.ts')); - await expectFileToMatch( - join(guardDir, 'test-guard.guard.ts'), - /export const testGuardGuard: CanActivateFn/, - ); - await expectFileToExist(join(guardDir, 'test-guard.guard.spec.ts')); + await expectFileToExist(join(guardDir, 'test-guard.ts')); + await expectFileToMatch(join(guardDir, 'test-guard.ts'), /export const testGuard: CanActivateFn/); + await expectFileToExist(join(guardDir, 'test-guard.spec.ts')); await ng('test', '--watch=false'); } diff --git a/tests/legacy-cli/e2e/tests/generate/guard/guard-implements.ts b/tests/legacy-cli/e2e/tests/generate/guard/guard-implements.ts index 70291fefecf5..ca7c35f754a4 100644 --- a/tests/legacy-cli/e2e/tests/generate/guard/guard-implements.ts +++ b/tests/legacy-cli/e2e/tests/generate/guard/guard-implements.ts @@ -8,8 +8,8 @@ export default async function () { await ng('generate', 'guard', 'match', '--implements=CanMatch'); await expectFileToExist(guardDir); - await expectFileToExist(join(guardDir, 'match.guard.ts')); - await expectFileToMatch(join(guardDir, 'match.guard.ts'), /export const matchGuard: CanMatch/); - await expectFileToExist(join(guardDir, 'match.guard.spec.ts')); + await expectFileToExist(join(guardDir, 'match-guard.ts')); + await expectFileToMatch(join(guardDir, 'match-guard.ts'), /export const matchGuard: CanMatch/); + await expectFileToExist(join(guardDir, 'match-guard.spec.ts')); await ng('test', '--watch=false'); } diff --git a/tests/legacy-cli/e2e/tests/generate/guard/guard-multiple-implements.ts b/tests/legacy-cli/e2e/tests/generate/guard/guard-multiple-implements.ts index 4dd66fc268a7..4359eaaf9f59 100644 --- a/tests/legacy-cli/e2e/tests/generate/guard/guard-multiple-implements.ts +++ b/tests/legacy-cli/e2e/tests/generate/guard/guard-multiple-implements.ts @@ -16,11 +16,11 @@ export default async function () { '--no-functional', ); await expectFileToExist(guardDir); - await expectFileToExist(join(guardDir, 'multiple.guard.ts')); + await expectFileToExist(join(guardDir, 'multiple-guard.ts')); await expectFileToMatch( - join(guardDir, 'multiple.guard.ts'), + join(guardDir, 'multiple-guard.ts'), /implements CanActivate, CanDeactivate/, ); - await expectFileToExist(join(guardDir, 'multiple.guard.spec.ts')); + await expectFileToExist(join(guardDir, 'multiple-guard.spec.ts')); await ng('test', '--watch=false'); } From 92e193c0b9a2b85b68d83c5f378d30fc8d10f13e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 4 Apr 2025 11:48:04 -0400 Subject: [PATCH 122/160] fix(@schematics/angular): generate resolvers with a dash type separator To align with the updated style guide, Angular v20 will generate resolvers with file extension `resolver` type prefixed with a `-` separator instead of a `.` by default. Projects will automatically use this naming convention. Projects can however opt-out by setting the `typeSeparator` option to `.` for the resolver schematic. This can be done as a default in the `angular.json` or directly on the commandline via `--type-separator=.` when executing `ng generate`. As an example, `example.resolver.ts` will now be named `example-resolver.ts`. The TypeScript declaration will continue to contain `Resolver` such as with `ExampleResolver`. --- packages/schematics/angular/guard/schema.json | 3 +- packages/schematics/angular/pipe/schema.json | 3 +- ..._typeSeparator__resolver.spec.ts.template} | 2 +- ...ze____typeSeparator__resolver.ts.template} | 0 ..._typeSeparator__resolver.spec.ts.template} | 2 +- ...ze____typeSeparator__resolver.ts.template} | 0 .../schematics/angular/resolver/index_spec.ts | 40 ++++++++++++++----- .../schematics/angular/resolver/schema.json | 6 +++ 8 files changed, 43 insertions(+), 13 deletions(-) rename packages/schematics/angular/resolver/class-files/{__name@dasherize__.resolver.spec.ts.template => __name@dasherize____typeSeparator__resolver.spec.ts.template} (91%) rename packages/schematics/angular/resolver/class-files/{__name@dasherize__.resolver.ts.template => __name@dasherize____typeSeparator__resolver.ts.template} (100%) rename packages/schematics/angular/resolver/functional-files/{__name@dasherize__.resolver.spec.ts.template => __name@dasherize____typeSeparator__resolver.spec.ts.template} (93%) rename packages/schematics/angular/resolver/functional-files/{__name@dasherize__.resolver.ts.template => __name@dasherize____typeSeparator__resolver.ts.template} (100%) diff --git a/packages/schematics/angular/guard/schema.json b/packages/schematics/angular/guard/schema.json index feb6385e356a..9e1a9f3084c6 100644 --- a/packages/schematics/angular/guard/schema.json +++ b/packages/schematics/angular/guard/schema.json @@ -62,7 +62,8 @@ "typeSeparator": { "type": "string", "default": "-", - "enum": ["-", "."] + "enum": ["-", "."], + "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.guard.ts`." } }, "required": ["name", "project"] diff --git a/packages/schematics/angular/pipe/schema.json b/packages/schematics/angular/pipe/schema.json index 69b86cc9fe1c..19803a524ed4 100644 --- a/packages/schematics/angular/pipe/schema.json +++ b/packages/schematics/angular/pipe/schema.json @@ -65,7 +65,8 @@ "typeSeparator": { "type": "string", "default": "-", - "enum": ["-", "."] + "enum": ["-", "."], + "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.pipe.ts`." } }, "required": ["name", "project"] diff --git a/packages/schematics/angular/resolver/class-files/__name@dasherize__.resolver.spec.ts.template b/packages/schematics/angular/resolver/class-files/__name@dasherize____typeSeparator__resolver.spec.ts.template similarity index 91% rename from packages/schematics/angular/resolver/class-files/__name@dasherize__.resolver.spec.ts.template rename to packages/schematics/angular/resolver/class-files/__name@dasherize____typeSeparator__resolver.spec.ts.template index 3cd1e381185e..af27433460e5 100644 --- a/packages/schematics/angular/resolver/class-files/__name@dasherize__.resolver.spec.ts.template +++ b/packages/schematics/angular/resolver/class-files/__name@dasherize____typeSeparator__resolver.spec.ts.template @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { <%= classify(name) %>Resolver } from './<%= dasherize(name) %>.resolver'; +import { <%= classify(name) %>Resolver } from './<%= dasherize(name) %><%= typeSeparator %>resolver'; describe('<%= classify(name) %>Resolver', () => { let resolver: <%= classify(name) %>Resolver; diff --git a/packages/schematics/angular/resolver/class-files/__name@dasherize__.resolver.ts.template b/packages/schematics/angular/resolver/class-files/__name@dasherize____typeSeparator__resolver.ts.template similarity index 100% rename from packages/schematics/angular/resolver/class-files/__name@dasherize__.resolver.ts.template rename to packages/schematics/angular/resolver/class-files/__name@dasherize____typeSeparator__resolver.ts.template diff --git a/packages/schematics/angular/resolver/functional-files/__name@dasherize__.resolver.spec.ts.template b/packages/schematics/angular/resolver/functional-files/__name@dasherize____typeSeparator__resolver.spec.ts.template similarity index 93% rename from packages/schematics/angular/resolver/functional-files/__name@dasherize__.resolver.spec.ts.template rename to packages/schematics/angular/resolver/functional-files/__name@dasherize____typeSeparator__resolver.spec.ts.template index 4e03cb15174e..c9f42a1a0bd5 100644 --- a/packages/schematics/angular/resolver/functional-files/__name@dasherize__.resolver.spec.ts.template +++ b/packages/schematics/angular/resolver/functional-files/__name@dasherize____typeSeparator__resolver.spec.ts.template @@ -1,7 +1,7 @@ import { TestBed } from '@angular/core/testing'; import { ResolveFn } from '@angular/router'; -import { <%= camelize(name) %>Resolver } from './<%= dasherize(name) %>.resolver'; +import { <%= camelize(name) %>Resolver } from './<%= dasherize(name) %><%= typeSeparator %>resolver'; describe('<%= camelize(name) %>Resolver', () => { const executeResolver: ResolveFn = (...resolverParameters) => diff --git a/packages/schematics/angular/resolver/functional-files/__name@dasherize__.resolver.ts.template b/packages/schematics/angular/resolver/functional-files/__name@dasherize____typeSeparator__resolver.ts.template similarity index 100% rename from packages/schematics/angular/resolver/functional-files/__name@dasherize__.resolver.ts.template rename to packages/schematics/angular/resolver/functional-files/__name@dasherize____typeSeparator__resolver.ts.template diff --git a/packages/schematics/angular/resolver/index_spec.ts b/packages/schematics/angular/resolver/index_spec.ts index 66a935e45261..1315ee6f01ce 100644 --- a/packages/schematics/angular/resolver/index_spec.ts +++ b/packages/schematics/angular/resolver/index_spec.ts @@ -48,9 +48,9 @@ describe('resolver Schematic', () => { appTree, ); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo.resolver.spec.ts'); - expect(files).toContain('/projects/bar/src/app/foo.resolver.ts'); - const fileString = tree.readContent('/projects/bar/src/app/foo.resolver.ts'); + expect(files).toContain('/projects/bar/src/app/foo-resolver.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-resolver.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-resolver.ts'); expect(fileString).toContain('export class FooResolver implements Resolve'); }); @@ -59,8 +59,30 @@ describe('resolver Schematic', () => { const tree = await schematicRunner.runSchematic('resolver', options, appTree); const files = tree.files; - expect(files).not.toContain('/projects/bar/src/app/foo.resolver.spec.ts'); + expect(files).not.toContain('/projects/bar/src/app/foo-resolver.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-resolver.ts'); + }); + + it('should use a `.` type separator when specified', async () => { + const options = { ...defaultOptions, typeSeparator: '.' }; + + const tree = await schematicRunner.runSchematic('resolver', options, appTree); + const files = tree.files; + expect(files).toContain('/projects/bar/src/app/foo.resolver.spec.ts'); expect(files).toContain('/projects/bar/src/app/foo.resolver.ts'); + const specContent = tree.readContent('/projects/bar/src/app/foo.resolver.spec.ts'); + expect(specContent).toContain(`'./foo.resolver'`); + }); + + it('should use a `-` type separator when specified', async () => { + const options = { ...defaultOptions, typeSeparator: '-' }; + + const tree = await schematicRunner.runSchematic('resolver', options, appTree); + const files = tree.files; + expect(files).toContain('/projects/bar/src/app/foo-resolver.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo-resolver.ts'); + const specContent = tree.readContent('/projects/bar/src/app/foo-resolver.spec.ts'); + expect(specContent).toContain(`'./foo-resolver'`); }); it('should respect the flat flag', async () => { @@ -68,8 +90,8 @@ describe('resolver Schematic', () => { const tree = await schematicRunner.runSchematic('resolver', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.resolver.spec.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo.resolver.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-resolver.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-resolver.ts'); }); it('should respect the sourceRoot value', async () => { @@ -77,12 +99,12 @@ describe('resolver Schematic', () => { config.projects.bar.sourceRoot = 'projects/bar/custom'; appTree.overwrite('/angular.json', JSON.stringify(config, null, 2)); appTree = await schematicRunner.runSchematic('resolver', defaultOptions, appTree); - expect(appTree.files).toContain('/projects/bar/custom/app/foo.resolver.ts'); + expect(appTree.files).toContain('/projects/bar/custom/app/foo-resolver.ts'); }); it('should create a functional resolver', async () => { const tree = await schematicRunner.runSchematic('resolver', defaultOptions, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.resolver.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-resolver.ts'); expect(fileString).toContain( 'export const fooResolver: ResolveFn = (route, state) => {', ); @@ -90,7 +112,7 @@ describe('resolver Schematic', () => { it('should create a helper function to run a functional resolver in a test', async () => { const tree = await schematicRunner.runSchematic('resolver', defaultOptions, appTree); - const fileString = tree.readContent('/projects/bar/src/app/foo.resolver.spec.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo-resolver.spec.ts'); expect(fileString).toContain( 'const executeResolver: ResolveFn = (...resolverParameters) => ', ); diff --git a/packages/schematics/angular/resolver/schema.json b/packages/schematics/angular/resolver/schema.json index a364e9271397..1a5654f3c7cf 100644 --- a/packages/schematics/angular/resolver/schema.json +++ b/packages/schematics/angular/resolver/schema.json @@ -45,6 +45,12 @@ "$default": { "$source": "projectName" } + }, + "typeSeparator": { + "type": "string", + "default": "-", + "enum": ["-", "."], + "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.resolver.ts`." } }, "required": ["name", "project"] From 319b8e0c2a0cd30ab96576464b4172a1f76a97a6 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 4 Apr 2025 06:18:43 +0000 Subject: [PATCH 123/160] fix(@angular/ssr): manage unhandled errors in zoneless applications Implement the `attachNodeGlobalErrorHandlers` function to handle 'unhandledRejection' and 'uncaughtException' events in Node.js. This function logs errors to the console, preventing unhandled errors from crashing the server. It is particularly useful for zoneless apps, ensuring error handling without relying on zones. Closes https://github.com/angular/angular/issues/58123 --- .../public-api/angular/ssr/node/index.api.md | 1 + packages/angular/ssr/node/src/app-engine.ts | 5 +++ .../node/src/common-engine/common-engine.ts | 5 ++- packages/angular/ssr/node/src/errors.ts | 40 +++++++++++++++++++ packages/angular/ssr/node/src/globals.d.ts | 9 +++++ .../ssr/src/{global.d.ts => globals.d.ts} | 0 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 packages/angular/ssr/node/src/errors.ts create mode 100644 packages/angular/ssr/node/src/globals.d.ts rename packages/angular/ssr/src/{global.d.ts => globals.d.ts} (100%) diff --git a/goldens/public-api/angular/ssr/node/index.api.md b/goldens/public-api/angular/ssr/node/index.api.md index 0bbeb8ae145a..89636c08e835 100644 --- a/goldens/public-api/angular/ssr/node/index.api.md +++ b/goldens/public-api/angular/ssr/node/index.api.md @@ -14,6 +14,7 @@ import { Type } from '@angular/core'; // @public export class AngularNodeAppEngine { + constructor(); handle(request: IncomingMessage | Http2ServerRequest, requestContext?: unknown): Promise; } diff --git a/packages/angular/ssr/node/src/app-engine.ts b/packages/angular/ssr/node/src/app-engine.ts index f8fd03a8e21c..8edac0ef69c6 100644 --- a/packages/angular/ssr/node/src/app-engine.ts +++ b/packages/angular/ssr/node/src/app-engine.ts @@ -9,6 +9,7 @@ import { AngularAppEngine } from '@angular/ssr'; import type { IncomingMessage } from 'node:http'; import type { Http2ServerRequest } from 'node:http2'; +import { attachNodeGlobalErrorHandlers } from './errors'; import { createWebRequestFromNodeRequest } from './request'; /** @@ -22,6 +23,10 @@ import { createWebRequestFromNodeRequest } from './request'; export class AngularNodeAppEngine { private readonly angularAppEngine = new AngularAppEngine(); + constructor() { + attachNodeGlobalErrorHandlers(); + } + /** * Handles an incoming HTTP request by serving prerendered content, performing server-side rendering, * or delivering a static file for client-side rendered routes based on the `RenderMode` setting. diff --git a/packages/angular/ssr/node/src/common-engine/common-engine.ts b/packages/angular/ssr/node/src/common-engine/common-engine.ts index 828fe17cf2b1..63c3f6075a23 100644 --- a/packages/angular/ssr/node/src/common-engine/common-engine.ts +++ b/packages/angular/ssr/node/src/common-engine/common-engine.ts @@ -11,6 +11,7 @@ import { renderApplication, renderModule, ɵSERVER_CONTEXT } from '@angular/plat import * as fs from 'node:fs'; import { dirname, join, normalize, resolve } from 'node:path'; import { URL } from 'node:url'; +import { attachNodeGlobalErrorHandlers } from '../errors'; import { CommonEngineInlineCriticalCssProcessor } from './inline-css-processor'; import { noopRunMethodAndMeasurePerf, @@ -63,7 +64,9 @@ export class CommonEngine { private readonly inlineCriticalCssProcessor = new CommonEngineInlineCriticalCssProcessor(); private readonly pageIsSSG = new Map(); - constructor(private options?: CommonEngineOptions) {} + constructor(private options?: CommonEngineOptions) { + attachNodeGlobalErrorHandlers(); + } /** * Render an HTML document for a specific URL with specified diff --git a/packages/angular/ssr/node/src/errors.ts b/packages/angular/ssr/node/src/errors.ts new file mode 100644 index 000000000000..f78699dcecc0 --- /dev/null +++ b/packages/angular/ssr/node/src/errors.ts @@ -0,0 +1,40 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +/** + * Attaches listeners to the Node.js process to capture and handle unhandled rejections and uncaught exceptions. + * Captured errors are logged to the console. This function logs errors to the console, preventing unhandled errors + * from crashing the server. It is particularly useful for Zoneless apps, ensuring error handling without relying on Zone.js. + * + * @remarks + * This function is a no-op if zone.js is available. + * For Zone-based apps, similar functionality is provided by Zone.js itself. See the Zone.js implementation here: + * https://github.com/angular/angular/blob/4a8d0b79001ec09bcd6f2d6b15117aa6aac1932c/packages/zone.js/lib/node/node.ts#L94%7C + * + * @internal + */ +export function attachNodeGlobalErrorHandlers(): void { + if (typeof Zone !== 'undefined') { + return; + } + + // Ensure that the listeners are registered only once. + // Otherwise, multiple instances may be registered during edit/refresh. + const gThis: typeof globalThis & { ngAttachNodeGlobalErrorHandlersCalled?: boolean } = globalThis; + if (gThis.ngAttachNodeGlobalErrorHandlersCalled) { + return; + } + + gThis.ngAttachNodeGlobalErrorHandlersCalled = true; + + process + // eslint-disable-next-line no-console + .on('unhandledRejection', (error) => console.error('unhandledRejection', error)) + // eslint-disable-next-line no-console + .on('uncaughtException', (error) => console.error('uncaughtException', error)); +} diff --git a/packages/angular/ssr/node/src/globals.d.ts b/packages/angular/ssr/node/src/globals.d.ts new file mode 100644 index 000000000000..596389a8a60d --- /dev/null +++ b/packages/angular/ssr/node/src/globals.d.ts @@ -0,0 +1,9 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +declare const Zone: unknown | undefined; diff --git a/packages/angular/ssr/src/global.d.ts b/packages/angular/ssr/src/globals.d.ts similarity index 100% rename from packages/angular/ssr/src/global.d.ts rename to packages/angular/ssr/src/globals.d.ts From c8c46abdf13af010191f86e3f1970d96ca00c585 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 5 Apr 2025 06:03:49 +0000 Subject: [PATCH 124/160] build: update dependency typescript to v5.8.3 --- package.json | 4 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 168 +++++++++++++------------- 3 files changed, 87 insertions(+), 87 deletions(-) diff --git a/package.json b/package.json index 9f38f12e63f0..38996b51e4a6 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "tar": "^7.0.0", "ts-node": "^10.9.1", "tslib": "2.8.1", - "typescript": "5.8.2", + "typescript": "5.8.3", "undici": "7.7.0", "unenv": "^1.10.0", "verdaccio": "6.1.2", @@ -176,6 +176,6 @@ } }, "resolutions": { - "typescript": "5.8.2" + "typescript": "5.8.3" } } diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 5616a4a7bb5e..802984ad3689 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -29,7 +29,7 @@ "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular/compiler": "20.0.0-next.5", "@angular/compiler-cli": "20.0.0-next.5", - "typescript": "5.8.2", + "typescript": "5.8.3", "webpack": "5.98.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2aa40023f016..414ec2018c64 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - typescript: 5.8.2 + typescript: 5.8.3 '@angular/build': workspace:* packageExtensionsChecksum: ea5f588691095a73da0f9364791a5f26 @@ -28,7 +28,7 @@ importers: version: 20.0.0-next.5 '@angular/compiler-cli': specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) + version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) '@angular/core': specifier: 20.0.0-next.5 version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) @@ -37,7 +37,7 @@ importers: version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/localize': specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(@angular/compiler@20.0.0-next.5) + version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(@angular/compiler@20.0.0-next.5) '@angular/material': specifier: 20.0.0-next.5 version: 20.0.0-next.5(zed5mlcqqzocvcjadwm7aowd6q) @@ -85,7 +85,7 @@ importers: version: 13.3.0(rollup@4.39.0) '@stylistic/eslint-plugin': specifier: ^4.0.0 - version: 4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + version: 4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -160,10 +160,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.29.0 - version: 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + version: 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) '@typescript-eslint/parser': specifier: 8.29.0 - version: 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + version: 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -193,7 +193,7 @@ importers: version: 3.1.1(eslint@9.23.0(jiti@1.21.7)) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)) + version: 2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7)) express: specifier: 5.1.0 version: 5.1.0 @@ -286,13 +286,13 @@ importers: version: 7.4.3 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@20.17.28)(typescript@5.8.2) + version: 10.9.2(@types/node@20.17.28)(typescript@5.8.3) tslib: specifier: 2.8.1 version: 2.8.1 typescript: - specifier: 5.8.2 - version: 5.8.2 + specifier: 5.8.3 + version: 5.8.3 undici: specifier: 7.7.0 version: 7.7.0 @@ -431,7 +431,7 @@ importers: version: 4.2.2 ng-packagr: specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) postcss: specifier: 8.5.3 version: 8.5.3 @@ -685,7 +685,7 @@ importers: version: 8.5.3 postcss-loader: specifier: 8.1.1 - version: 8.1.1(postcss@8.5.3)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.25.2)) + version: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.2)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -747,7 +747,7 @@ importers: version: 3.0.4 ng-packagr: specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2) + version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) undici: specifier: 7.7.0 version: 7.7.0 @@ -845,10 +845,10 @@ importers: version: 20.0.0-next.5 '@angular/compiler-cli': specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) + version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) typescript: - specifier: 5.8.2 - version: 5.8.2 + specifier: 5.8.3 + version: 5.8.3 webpack: specifier: 5.98.0 version: 5.98.0(esbuild@0.25.2) @@ -910,7 +910,7 @@ packages: hasBin: true peerDependencies: '@angular/compiler': 20.0.0-next.5 - typescript: 5.8.2 + typescript: 5.8.3 '@angular/compiler@20.0.0-next.5': resolution: {integrity: sha512-5ZW1A0XJmV8zG+gDxBWEv1b42KY/bb0Bnf5DZ7SsBAJddxoavoC+46A0TzjlxWwI77z46NsnEODf268XJacpjg==} @@ -2885,14 +2885,14 @@ packages: peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: 5.8.2 + typescript: 5.8.3 '@typescript-eslint/parser@8.29.0': resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.8.2 + typescript: 5.8.3 '@typescript-eslint/scope-manager@8.28.0': resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} @@ -2907,7 +2907,7 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.8.2 + typescript: 5.8.3 '@typescript-eslint/types@8.28.0': resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} @@ -2921,27 +2921,27 @@ packages: resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.8.2 + typescript: 5.8.3 '@typescript-eslint/typescript-estree@8.29.0': resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.8.2 + typescript: 5.8.3 '@typescript-eslint/utils@8.28.0': resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.8.2 + typescript: 5.8.3 '@typescript-eslint/utils@8.29.0': resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.8.2 + typescript: 5.8.3 '@typescript-eslint/visitor-keys@8.28.0': resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} @@ -3858,7 +3858,7 @@ packages: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: - typescript: 5.8.2 + typescript: 5.8.3 peerDependenciesMeta: typescript: optional: true @@ -5951,7 +5951,7 @@ packages: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 - typescript: 5.8.2 + typescript: 5.8.3 peerDependenciesMeta: tailwindcss: optional: true @@ -6799,7 +6799,7 @@ packages: engines: {node: '>=16'} peerDependencies: rollup: ^3.29.4 || ^4 - typescript: 5.8.2 + typescript: 5.8.3 rollup-plugin-sourcemaps@0.6.3: resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} @@ -7419,7 +7419,7 @@ packages: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: - typescript: 5.8.2 + typescript: 5.8.3 ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -7428,7 +7428,7 @@ packages: '@swc/core': '>=1.2.50' '@swc/wasm': '>=1.2.50' '@types/node': '*' - typescript: 5.8.2 + typescript: 5.8.3 peerDependenciesMeta: '@swc/core': optional: true @@ -7499,8 +7499,8 @@ packages: typed-query-selector@2.12.0: resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} - typescript@5.8.2: - resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true @@ -8035,7 +8035,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2)': + '@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3)': dependencies: '@angular/compiler': 20.0.0-next.5 '@babel/core': 7.26.10 @@ -8045,7 +8045,7 @@ snapshots: reflect-metadata: 0.2.2 semver: 7.7.1 tslib: 2.8.1 - typescript: 5.8.2 + typescript: 5.8.3 yargs: 17.7.2 transitivePeerDependencies: - supports-color @@ -8070,10 +8070,10 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(@angular/compiler@20.0.0-next.5)': + '@angular/localize@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(@angular/compiler@20.0.0-next.5)': dependencies: '@angular/compiler': 20.0.0-next.5 - '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) + '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) '@babel/core': 7.26.10 '@types/babel__core': 7.20.5 tinyglobby: 0.2.12 @@ -8102,7 +8102,7 @@ snapshots: semver: 7.7.1 supports-color: 10.0.0 typed-graphqlify: 3.1.6 - typescript: 5.8.2 + typescript: 5.8.3 which: 5.0.0 yaml: 2.7.1 transitivePeerDependencies: @@ -9736,9 +9736,9 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) eslint: 9.23.0(jiti@1.21.7) eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -10135,32 +10135,32 @@ snapshots: '@types/node': 20.17.28 optional: true - '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.29.0 eslint: 9.23.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.2) - typescript: 5.8.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.29.0 '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.29.0 debug: 4.4.0(supports-color@10.0.0) eslint: 9.23.0(jiti@1.21.7) - typescript: 5.8.2 + typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -10174,14 +10174,14 @@ snapshots: '@typescript-eslint/types': 8.29.0 '@typescript-eslint/visitor-keys': 8.29.0 - '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) debug: 4.4.0(supports-color@10.0.0) eslint: 9.23.0(jiti@1.21.7) - ts-api-utils: 2.1.0(typescript@5.8.2) - typescript: 5.8.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -10189,7 +10189,7 @@ snapshots: '@typescript-eslint/types@8.29.0': {} - '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.2)': + '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 8.28.0 '@typescript-eslint/visitor-keys': 8.28.0 @@ -10198,12 +10198,12 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.2) - typescript: 5.8.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.2)': + '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 8.29.0 '@typescript-eslint/visitor-keys': 8.29.0 @@ -10212,30 +10212,30 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.2) - typescript: 5.8.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.28.0 '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.3) eslint: 9.23.0(jiti@1.21.7) - typescript: 5.8.2 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2)': + '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.29.0 '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) eslint: 9.23.0(jiti@1.21.7) - typescript: 5.8.2 + typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -11448,14 +11448,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@9.0.0(typescript@5.8.2): + cosmiconfig@9.0.0(typescript@5.8.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.8.2 + typescript: 5.8.3 create-require@1.1.1: {} @@ -11968,11 +11968,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -11982,7 +11982,7 @@ snapshots: dependencies: eslint: 9.23.0(jiti@1.21.7) - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint@9.23.0(jiti@1.21.7)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11993,7 +11993,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.23.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12005,7 +12005,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -13829,10 +13829,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2))(tslib@2.8.1)(typescript@5.8.2): + ng-packagr@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.2) + '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) '@rollup/plugin-json': 6.1.0(rollup@4.39.0) '@rollup/wasm-node': 4.38.0 ajv: 8.17.1 @@ -13849,12 +13849,12 @@ snapshots: ora: 5.4.1 piscina: 4.9.2 postcss: 8.5.3 - rollup-plugin-dts: 6.2.1(rollup@4.39.0)(typescript@5.8.2) + rollup-plugin-dts: 6.2.1(rollup@4.39.0)(typescript@5.8.3) rxjs: 7.8.2 sass: 1.86.3 tinyglobby: 0.2.12 tslib: 2.8.1 - typescript: 5.8.2 + typescript: 5.8.3 optionalDependencies: rollup: 4.39.0 @@ -14314,9 +14314,9 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.25.2)): + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.2)): dependencies: - cosmiconfig: 9.0.0(typescript@5.8.2) + cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 semver: 7.7.1 @@ -14768,11 +14768,11 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.1(rollup@4.39.0)(typescript@5.8.2): + rollup-plugin-dts@6.2.1(rollup@4.39.0)(typescript@5.8.3): dependencies: magic-string: 0.30.17 rollup: 4.39.0 - typescript: 5.8.2 + typescript: 5.8.3 optionalDependencies: '@babel/code-frame': 7.26.2 @@ -15564,11 +15564,11 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.1.0(typescript@5.8.2): + ts-api-utils@2.1.0(typescript@5.8.3): dependencies: - typescript: 5.8.2 + typescript: 5.8.3 - ts-node@10.9.2(@types/node@20.17.28)(typescript@5.8.2): + ts-node@10.9.2(@types/node@20.17.28)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -15582,7 +15582,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.2 + typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -15669,7 +15669,7 @@ snapshots: typed-query-selector@2.12.0: {} - typescript@5.8.2: {} + typescript@5.8.3: {} typical@4.0.0: {} From df85980f6314fd4a0b3baa73e7d57d298b986af3 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 4 Apr 2025 11:32:09 -0400 Subject: [PATCH 125/160] refactor(@schematics/angular): use `generateFromFiles` helper in even more cases The enum, interceptor, and resolver schematics now more fully use the `generateFromFiles` helper. This reduces repeat code within each schematic. In some cases the schematic has been reduced to a single call to the helper. --- ...> __name@dasherize__.__type__.ts.template} | 0 packages/schematics/angular/enum/index.ts | 6 ++---- ...e@dasherize__.interceptor.spec.ts.template | 0 ...__name@dasherize__.interceptor.ts.template | 0 ...e@dasherize__.interceptor.spec.ts.template | 0 ...__name@dasherize__.interceptor.ts.template | 0 .../schematics/angular/interceptor/index.ts | 21 ++++--------------- packages/schematics/angular/resolver/index.ts | 12 +++++------ 8 files changed, 12 insertions(+), 27 deletions(-) rename packages/schematics/angular/enum/files/{__name@dasherize____type__.ts.template => __name@dasherize__.__type__.ts.template} (100%) rename packages/schematics/angular/interceptor/class-files/{__name@dasherize@if-flat__ => }/__name@dasherize__.interceptor.spec.ts.template (100%) rename packages/schematics/angular/interceptor/class-files/{__name@dasherize@if-flat__ => }/__name@dasherize__.interceptor.ts.template (100%) rename packages/schematics/angular/interceptor/functional-files/{__name@dasherize@if-flat__ => }/__name@dasherize__.interceptor.spec.ts.template (100%) rename packages/schematics/angular/interceptor/functional-files/{__name@dasherize@if-flat__ => }/__name@dasherize__.interceptor.ts.template (100%) diff --git a/packages/schematics/angular/enum/files/__name@dasherize____type__.ts.template b/packages/schematics/angular/enum/files/__name@dasherize__.__type__.ts.template similarity index 100% rename from packages/schematics/angular/enum/files/__name@dasherize____type__.ts.template rename to packages/schematics/angular/enum/files/__name@dasherize__.__type__.ts.template diff --git a/packages/schematics/angular/enum/index.ts b/packages/schematics/angular/enum/index.ts index 34f1c04477ff..e008a88b43d2 100644 --- a/packages/schematics/angular/enum/index.ts +++ b/packages/schematics/angular/enum/index.ts @@ -6,12 +6,10 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Rule } from '@angular-devkit/schematics'; +import type { Rule } from '@angular-devkit/schematics'; import { generateFromFiles } from '../utility/generate-from-files'; -import { Schema as EnumOptions } from './schema'; +import type { Schema as EnumOptions } from './schema'; export default function (options: EnumOptions): Rule { - options.type = options.type ? `.${options.type}` : ''; - return generateFromFiles(options); } diff --git a/packages/schematics/angular/interceptor/class-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.spec.ts.template b/packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.spec.ts.template similarity index 100% rename from packages/schematics/angular/interceptor/class-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.spec.ts.template rename to packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.spec.ts.template diff --git a/packages/schematics/angular/interceptor/class-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.ts.template b/packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.ts.template similarity index 100% rename from packages/schematics/angular/interceptor/class-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.ts.template rename to packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.ts.template diff --git a/packages/schematics/angular/interceptor/functional-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.spec.ts.template b/packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.spec.ts.template similarity index 100% rename from packages/schematics/angular/interceptor/functional-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.spec.ts.template rename to packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.spec.ts.template diff --git a/packages/schematics/angular/interceptor/functional-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.ts.template b/packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.ts.template similarity index 100% rename from packages/schematics/angular/interceptor/functional-files/__name@dasherize@if-flat__/__name@dasherize__.interceptor.ts.template rename to packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.ts.template diff --git a/packages/schematics/angular/interceptor/index.ts b/packages/schematics/angular/interceptor/index.ts index b590c27f9aff..a057e80c506f 100755 --- a/packages/schematics/angular/interceptor/index.ts +++ b/packages/schematics/angular/interceptor/index.ts @@ -6,25 +6,12 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Rule } from '@angular-devkit/schematics'; +import type { Rule } from '@angular-devkit/schematics'; import { generateFromFiles } from '../utility/generate-from-files'; -import { Schema as InterceptorOptions } from './schema'; +import type { Schema as InterceptorOptions } from './schema'; export default function (options: InterceptorOptions): Rule { - // This schematic uses an older method to implement the flat option - const flat = options.flat; - options.flat = true; - const extraTemplateValues = { - 'if-flat': (s: string) => (flat ? '' : s), - }; + const templateFilesDirectory = options.functional ? './functional-files' : './class-files'; - return options.functional - ? generateFromFiles( - { ...options, templateFilesDirectory: './functional-files' }, - extraTemplateValues, - ) - : generateFromFiles( - { ...options, templateFilesDirectory: './class-files' }, - extraTemplateValues, - ); + return generateFromFiles({ ...options, templateFilesDirectory }); } diff --git a/packages/schematics/angular/resolver/index.ts b/packages/schematics/angular/resolver/index.ts index c1b2b43daed1..ed5ec80ce2d7 100644 --- a/packages/schematics/angular/resolver/index.ts +++ b/packages/schematics/angular/resolver/index.ts @@ -6,12 +6,12 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Rule } from '@angular-devkit/schematics'; +import type { Rule } from '@angular-devkit/schematics'; import { generateFromFiles } from '../utility/generate-from-files'; -import { Schema } from './schema'; +import type { Schema as ResolverOptions } from './schema'; -export default function (options: Schema): Rule { - return options.functional - ? generateFromFiles({ ...options, templateFilesDirectory: './functional-files' }) - : generateFromFiles({ ...options, templateFilesDirectory: './class-files' }); +export default function (options: ResolverOptions): Rule { + const templateFilesDirectory = options.functional ? './functional-files' : './class-files'; + + return generateFromFiles({ ...options, templateFilesDirectory }); } From ea1143ddd801b775828f0b62788f4cce0dd7e9ce Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 7 Apr 2025 09:27:23 +0200 Subject: [PATCH 126/160] fix(@schematics/angular): infer app component name and path in server schematic Currently the `server` schematic assumes that the app component is called `App` and it's places in `./app/app`. This will fail if the user renamed it or moved it to a different file. These changes add a utility function to resolve the component name and path from the source the source code, and they use the new function to produce a more accurate result. --- .../app/app.module.server.ts.template | 8 +- .../standalone-src/main.server.ts.template | 4 +- .../app/app.module.server.ts.template | 8 +- .../standalone-src/main.server.ts.template | 4 +- packages/schematics/angular/server/index.ts | 15 ++ .../schematics/angular/server/index_spec.ts | 120 ++++++++++++++ .../schematics/angular/utility/ast-utils.ts | 10 +- .../utility/standalone/app_component.ts | 148 ++++++++++++++++++ 8 files changed, 298 insertions(+), 19 deletions(-) create mode 100644 packages/schematics/angular/utility/standalone/app_component.ts diff --git a/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template b/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template index bd711d72954a..5ffb915ae45c 100644 --- a/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template @@ -1,12 +1,12 @@ import { NgModule } from '@angular/core'; import { provideServerRendering, withRoutes } from '@angular/ssr'; -import { App } from './app'; -import { AppModule } from './app.module'; +import { <%= appComponentName %> } from '<%= appComponentPath %>'; +import { <%= appModuleName %> } from '<%= appModulePath %>'; import { serverRoutes } from './app.routes.server'; @NgModule({ - imports: [AppModule], + imports: [<%= appModuleName %>], providers: [provideServerRendering(withRoutes(serverRoutes))], - bootstrap: [App], + bootstrap: [<%= appComponentName %>], }) export class AppServerModule {} diff --git a/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template b/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template index 154ce1c8fd43..bc0b6ba59758 100644 --- a/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template @@ -1,7 +1,7 @@ import { bootstrapApplication } from '@angular/platform-browser'; -import { App } from './app/app'; +import { <%= appComponentName %> } from '<%= appComponentPath %>'; import { config } from './app/app.config.server'; -const bootstrap = () => bootstrapApplication(App, config); +const bootstrap = () => bootstrapApplication(<%= appComponentName %>, config); export default bootstrap; diff --git a/packages/schematics/angular/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template b/packages/schematics/angular/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template index 38689aa6c3ff..eeffba7f902b 100644 --- a/packages/schematics/angular/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template +++ b/packages/schematics/angular/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template @@ -1,14 +1,14 @@ import { NgModule } from '@angular/core'; import { ServerModule } from '@angular/platform-server'; -import { AppModule } from './app.module'; -import { App } from './app'; +import { <%= appModuleName %> } from '<%= appModulePath %>'; +import { <%= appComponentName %> } from '<%= appComponentPath %>'; @NgModule({ imports: [ - AppModule, + <%= appModuleName %>, ServerModule, ], - bootstrap: [App], + bootstrap: [<%= appComponentName %>], }) export class AppServerModule {} diff --git a/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template b/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template index 154ce1c8fd43..bc0b6ba59758 100644 --- a/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template +++ b/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template @@ -1,7 +1,7 @@ import { bootstrapApplication } from '@angular/platform-browser'; -import { App } from './app/app'; +import { <%= appComponentName %> } from '<%= appComponentPath %>'; import { config } from './app/app.config.server'; -const bootstrap = () => bootstrapApplication(App, config); +const bootstrap = () => bootstrapApplication(<%= appComponentName %>, config); export default bootstrap; diff --git a/packages/schematics/angular/server/index.ts b/packages/schematics/angular/server/index.ts index 1f8ccd7e85aa..a8baccf0d503 100644 --- a/packages/schematics/angular/server/index.ts +++ b/packages/schematics/angular/server/index.ts @@ -27,6 +27,7 @@ import { latestVersions } from '../utility/latest-versions'; import { isStandaloneApp } from '../utility/ng-ast-utils'; import { relativePathToWorkspaceRoot } from '../utility/paths'; import { isUsingApplicationBuilder, targetBuildNotFoundError } from '../utility/project-targets'; +import { resolveBootstrappedComponentData } from '../utility/standalone/app_component'; import { getMainFilePath } from '../utility/standalone/util'; import { getWorkspace, updateWorkspace } from '../utility/workspace'; import { Builders } from '../utility/workspace-models'; @@ -187,10 +188,24 @@ export default function (options: ServerOptions): Rule { let filesUrl = `./files/${usingApplicationBuilder ? 'application-builder/' : 'server-builder/'}`; filesUrl += isStandalone ? 'standalone-src' : 'ngmodule-src'; + const { componentName, componentImportPathInSameFile, moduleName, moduleImportPathInSameFile } = + resolveBootstrappedComponentData(host, browserEntryPoint) || { + componentName: 'App', + componentImportPathInSameFile: './app/app', + moduleName: 'AppModule', + moduleImportPathInSameFile: './app/app.module', + }; const templateSource = apply(url(filesUrl), [ applyTemplates({ ...strings, ...options, + appComponentName: componentName, + appComponentPath: componentImportPathInSameFile, + appModuleName: moduleName, + appModulePath: + moduleImportPathInSameFile === null + ? null + : `./${posix.basename(moduleImportPathInSameFile)}`, }), move(sourceRoot), ]); diff --git a/packages/schematics/angular/server/index_spec.ts b/packages/schematics/angular/server/index_spec.ts index 316fdfa17557..a4bacc3f17bb 100644 --- a/packages/schematics/angular/server/index_spec.ts +++ b/packages/schematics/angular/server/index_spec.ts @@ -70,6 +70,84 @@ describe('Server Schematic', () => { ); }); + it('should account for renamed app component and module', async () => { + appTree.create( + '/projects/bar/src/app/my-custom-module.ts', + ` + import { NgModule } from '@angular/core'; + import { BrowserModule } from '@angular/platform-browser'; + import { MyCustomApp } from './foo/bar/baz/app.foo'; + + @NgModule({ + declarations: [MyCustomApp], + imports: [BrowserModule], + bootstrap: [MyCustomApp] + }) + export class MyCustomModule {} + `, + ); + + appTree.overwrite( + '/projects/bar/src/main.ts', + ` + import { platformBrowser } from '@angular/platform-browser'; + import { MyCustomModule } from './app/my-custom-module'; + + platformBrowser().bootstrapModule(MyCustomModule) + .catch(err => console.error(err)); + `, + ); + + const tree = await schematicRunner.runSchematic('server', defaultOptions, appTree); + const filePath = '/projects/bar/src/app/app.module.server.ts'; + expect(tree.exists(filePath)).toBeTrue(); + const contents = tree.readContent(filePath); + + expect(contents).toContain(`import { MyCustomApp } from './foo/bar/baz/app.foo';`); + expect(contents).toContain(`import { MyCustomModule } from './my-custom-module';`); + expect(contents).toContain(`imports: [MyCustomModule],`); + expect(contents).toContain(`bootstrap: [MyCustomApp],`); + }); + + it('should account for renamed app component and module that have been aliased', async () => { + appTree.create( + '/projects/bar/src/app/my-custom-module.ts', + ` + import { NgModule } from '@angular/core'; + import { BrowserModule } from '@angular/platform-browser'; + import { MyCustomApp as MyAliasedApp } from './foo/bar/baz/app.foo'; + + @NgModule({ + declarations: [MyAliasedApp], + imports: [BrowserModule], + bootstrap: [MyAliasedApp] + }) + export class MyCustomModule {} + `, + ); + + appTree.overwrite( + '/projects/bar/src/main.ts', + ` + import { platformBrowser } from '@angular/platform-browser'; + import { MyCustomModule as MyAliasedModule } from './app/my-custom-module'; + + platformBrowser().bootstrapModule(MyAliasedModule) + .catch(err => console.error(err)); + `, + ); + + const tree = await schematicRunner.runSchematic('server', defaultOptions, appTree); + const filePath = '/projects/bar/src/app/app.module.server.ts'; + expect(tree.exists(filePath)).toBeTrue(); + const contents = tree.readContent(filePath); + + expect(contents).toContain(`import { MyCustomApp } from './foo/bar/baz/app.foo';`); + expect(contents).toContain(`import { MyCustomModule } from './my-custom-module';`); + expect(contents).toContain(`imports: [MyCustomModule],`); + expect(contents).toContain(`bootstrap: [MyCustomApp],`); + }); + it('should add dependency: @angular/platform-server', async () => { const tree = await schematicRunner.runSchematic('server', defaultOptions, appTree); const filePath = '/package.json'; @@ -127,6 +205,48 @@ describe('Server Schematic', () => { expect(contents).toContain(`bootstrapApplication(App, config)`); }); + it('should account for renamed app component', async () => { + appTree.overwrite( + '/projects/bar/src/main.ts', + ` + import { bootstrapApplication } from '@angular/platform-browser'; + import { appConfig } from './app/app.config'; + import { MyCustomApp } from './foo/bar/baz/app.foo'; + + bootstrapApplication(MyCustomApp, appConfig) + .catch((err) => console.error(err)); + `, + ); + + const tree = await schematicRunner.runSchematic('server', defaultOptions, appTree); + const filePath = '/projects/bar/src/main.server.ts'; + expect(tree.exists(filePath)).toBeTrue(); + const contents = tree.readContent(filePath); + expect(contents).toContain(`import { MyCustomApp } from './foo/bar/baz/app.foo';`); + expect(contents).toContain(`bootstrapApplication(MyCustomApp, config)`); + }); + + it('should account for renamed app component that is aliased within the main file', async () => { + appTree.overwrite( + '/projects/bar/src/main.ts', + ` + import { bootstrapApplication } from '@angular/platform-browser'; + import { appConfig } from './app/app.config'; + import { MyCustomApp as MyCustomAlias } from './foo/bar/baz/app.foo'; + + bootstrapApplication(MyCustomAlias, appConfig) + .catch((err) => console.error(err)); + `, + ); + + const tree = await schematicRunner.runSchematic('server', defaultOptions, appTree); + const filePath = '/projects/bar/src/main.server.ts'; + expect(tree.exists(filePath)).toBeTrue(); + const contents = tree.readContent(filePath); + expect(contents).toContain(`import { MyCustomApp } from './foo/bar/baz/app.foo';`); + expect(contents).toContain(`bootstrapApplication(MyCustomApp, config)`); + }); + it('should create server app config file', async () => { const tree = await schematicRunner.runSchematic('server', defaultOptions, appTree); const filePath = '/projects/bar/src/app/app.config.server.ts'; diff --git a/packages/schematics/angular/utility/ast-utils.ts b/packages/schematics/angular/utility/ast-utils.ts index a39261868f50..106481688d18 100644 --- a/packages/schematics/angular/utility/ast-utils.ts +++ b/packages/schematics/angular/utility/ast-utils.ts @@ -343,7 +343,7 @@ export function getDecoratorMetadata( export function getMetadataField( node: ts.ObjectLiteralExpression, metadataField: string, -): ts.ObjectLiteralElement[] { +): ts.PropertyAssignment[] { return ( node.properties .filter(ts.isPropertyAssignment) @@ -561,13 +561,9 @@ export function getRouterModuleDeclaration(source: ts.SourceFile): ts.Expression } const matchingProperties = getMetadataField(node, 'imports'); - if (!matchingProperties) { - return; - } - - const assignment = matchingProperties[0] as ts.PropertyAssignment; + const assignment = matchingProperties[0]; - if (assignment.initializer.kind !== ts.SyntaxKind.ArrayLiteralExpression) { + if (!assignment || assignment.initializer.kind !== ts.SyntaxKind.ArrayLiteralExpression) { return; } diff --git a/packages/schematics/angular/utility/standalone/app_component.ts b/packages/schematics/angular/utility/standalone/app_component.ts new file mode 100644 index 000000000000..28b436c737c6 --- /dev/null +++ b/packages/schematics/angular/utility/standalone/app_component.ts @@ -0,0 +1,148 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { SchematicsException, Tree } from '@angular-devkit/schematics'; +import ts from '../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { getDecoratorMetadata, getMetadataField } from '../ast-utils'; +import { findBootstrapModuleCall, getAppModulePath } from '../ng-ast-utils'; +import { findBootstrapApplicationCall, getSourceFile } from './util'; + +/** Data resolved for a bootstrapped component. */ +interface BootstrappedComponentData { + /** Original name of the component class. */ + componentName: string; + + /** Path under which the component was imported in the main entrypoint. */ + componentImportPathInSameFile: string; + + /** Original name of the NgModule being bootstrapped, null if the app isn't module-based. */ + moduleName: string | null; + + /** + * Path under which the module was imported in the main entrypoint, + * null if the app isn't module-based. + */ + moduleImportPathInSameFile: string | null; +} + +/** + * Finds the original name and path relative to the `main.ts` of the bootrstrapped app component. + * @param tree File tree in which to look for the component. + * @param mainFilePath Path of the `main` file. + */ +export function resolveBootstrappedComponentData( + tree: Tree, + mainFilePath: string, +): BootstrappedComponentData | null { + // First try to resolve for a standalone app. + try { + const call = findBootstrapApplicationCall(tree, mainFilePath); + + if (call.arguments.length > 0 && ts.isIdentifier(call.arguments[0])) { + const resolved = resolveIdentifier(call.arguments[0]); + + if (resolved) { + return { + componentName: resolved.name, + componentImportPathInSameFile: resolved.path, + moduleName: null, + moduleImportPathInSameFile: null, + }; + } + } + } catch (e) { + // `findBootstrapApplicationCall` will throw if it can't find the `bootrstrapApplication` call. + // Catch so we can continue to the fallback logic. + if (!(e instanceof SchematicsException)) { + throw e; + } + } + + // Otherwise fall back to resolving an NgModule-based app. + return resolveNgModuleBasedData(tree, mainFilePath); +} + +/** Resolves the bootstrap data for a NgModule-based app. */ +function resolveNgModuleBasedData( + tree: Tree, + mainFilePath: string, +): BootstrappedComponentData | null { + const appModulePath = getAppModulePath(tree, mainFilePath); + const appModuleFile = getSourceFile(tree, appModulePath); + const metadataNodes = getDecoratorMetadata(appModuleFile, 'NgModule', '@angular/core'); + + for (const node of metadataNodes) { + if (!ts.isObjectLiteralExpression(node)) { + continue; + } + + const bootstrapProp = getMetadataField(node, 'bootstrap').find((prop) => { + return ( + ts.isArrayLiteralExpression(prop.initializer) && + prop.initializer.elements.length > 0 && + ts.isIdentifier(prop.initializer.elements[0]) + ); + }); + + const componentIdentifier = (bootstrapProp?.initializer as ts.ArrayLiteralExpression) + .elements[0] as ts.Identifier | undefined; + const componentResult = componentIdentifier ? resolveIdentifier(componentIdentifier) : null; + const bootstrapCall = findBootstrapModuleCall(tree, mainFilePath); + + if ( + componentResult && + bootstrapCall && + bootstrapCall.arguments.length > 0 && + ts.isIdentifier(bootstrapCall.arguments[0]) + ) { + const moduleResult = resolveIdentifier(bootstrapCall.arguments[0]); + + if (moduleResult) { + return { + componentName: componentResult.name, + componentImportPathInSameFile: componentResult.path, + moduleName: moduleResult.name, + moduleImportPathInSameFile: moduleResult.path, + }; + } + } + } + + return null; +} + +/** Resolves an identifier to its original name and path that it was imported from. */ +function resolveIdentifier(identifier: ts.Identifier): { name: string; path: string } | null { + const sourceFile = identifier.getSourceFile(); + + // Try to resolve the import path by looking at the top-level named imports of the file. + for (const node of sourceFile.statements) { + if ( + !ts.isImportDeclaration(node) || + !ts.isStringLiteral(node.moduleSpecifier) || + !node.importClause || + !node.importClause.namedBindings || + !ts.isNamedImports(node.importClause.namedBindings) + ) { + continue; + } + + for (const element of node.importClause.namedBindings.elements) { + if (element.name.text === identifier.text) { + return { + // Note that we use `propertyName` if available, because it contains + // the real name in the case where the import is aliased. + name: (element.propertyName || element.name).text, + path: node.moduleSpecifier.text, + }; + } + } + } + + return null; +} From 040282d8fd5838266785997442c4f5a269666cf3 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 7 Apr 2025 10:52:56 -0400 Subject: [PATCH 127/160] fix(@schematics/angular): generate interceptors with a dash type separator To align with the updated style guide, Angular v20 will generate interceptors with file extension `interceptor` type prefixed with a `-` separator instead of a `.` by default. Projects will automatically use this naming convention. Projects can however opt-out by setting the `typeSeparator` option to `.` for the interceptor schematic. This can be done as a default in the `angular.json` or directly on the commandline via `--type-separator=.` when executing `ng generate`. As an example, `example.interceptor.ts` will now be named `example-interceptor.ts`. The TypeScript declaration will continue to contain `Interceptor` such as with `ExampleInterceptor`. --- ...peSeparator__interceptor.spec.ts.template} | 2 +- ...___typeSeparator__interceptor.ts.template} | 0 ...peSeparator__interceptor.spec.ts.template} | 2 +- ...___typeSeparator__interceptor.ts.template} | 0 .../angular/interceptor/index_spec.ts | 32 ++++++++++++++++--- .../angular/interceptor/schema.json | 6 ++++ .../generate/interceptor/interceptor-basic.ts | 6 ++-- 7 files changed, 38 insertions(+), 10 deletions(-) rename packages/schematics/angular/interceptor/class-files/{__name@dasherize__.interceptor.spec.ts.template => __name@dasherize____typeSeparator__interceptor.spec.ts.template} (91%) rename packages/schematics/angular/interceptor/class-files/{__name@dasherize__.interceptor.ts.template => __name@dasherize____typeSeparator__interceptor.ts.template} (100%) rename packages/schematics/angular/interceptor/functional-files/{__name@dasherize__.interceptor.spec.ts.template => __name@dasherize____typeSeparator__interceptor.spec.ts.template} (92%) rename packages/schematics/angular/interceptor/functional-files/{__name@dasherize__.interceptor.ts.template => __name@dasherize____typeSeparator__interceptor.ts.template} (100%) diff --git a/packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.spec.ts.template b/packages/schematics/angular/interceptor/class-files/__name@dasherize____typeSeparator__interceptor.spec.ts.template similarity index 91% rename from packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.spec.ts.template rename to packages/schematics/angular/interceptor/class-files/__name@dasherize____typeSeparator__interceptor.spec.ts.template index d136abd5f7dc..9af595489571 100755 --- a/packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.spec.ts.template +++ b/packages/schematics/angular/interceptor/class-files/__name@dasherize____typeSeparator__interceptor.spec.ts.template @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { <%= classify(name) %>Interceptor } from './<%= dasherize(name) %>.interceptor'; +import { <%= classify(name) %>Interceptor } from './<%= dasherize(name) %><%= typeSeparator %>interceptor'; describe('<%= classify(name) %>Interceptor', () => { beforeEach(() => TestBed.configureTestingModule({ diff --git a/packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.ts.template b/packages/schematics/angular/interceptor/class-files/__name@dasherize____typeSeparator__interceptor.ts.template similarity index 100% rename from packages/schematics/angular/interceptor/class-files/__name@dasherize__.interceptor.ts.template rename to packages/schematics/angular/interceptor/class-files/__name@dasherize____typeSeparator__interceptor.ts.template diff --git a/packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.spec.ts.template b/packages/schematics/angular/interceptor/functional-files/__name@dasherize____typeSeparator__interceptor.spec.ts.template similarity index 92% rename from packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.spec.ts.template rename to packages/schematics/angular/interceptor/functional-files/__name@dasherize____typeSeparator__interceptor.spec.ts.template index 58b6b7e709b8..ee1662c6530f 100755 --- a/packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.spec.ts.template +++ b/packages/schematics/angular/interceptor/functional-files/__name@dasherize____typeSeparator__interceptor.spec.ts.template @@ -1,7 +1,7 @@ import { TestBed } from '@angular/core/testing'; import { HttpInterceptorFn } from '@angular/common/http'; -import { <%= camelize(name) %>Interceptor } from './<%= dasherize(name) %>.interceptor'; +import { <%= camelize(name) %>Interceptor } from './<%= dasherize(name) %><%= typeSeparator %>interceptor'; describe('<%= camelize(name) %>Interceptor', () => { const interceptor: HttpInterceptorFn = (req, next) => diff --git a/packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.ts.template b/packages/schematics/angular/interceptor/functional-files/__name@dasherize____typeSeparator__interceptor.ts.template similarity index 100% rename from packages/schematics/angular/interceptor/functional-files/__name@dasherize__.interceptor.ts.template rename to packages/schematics/angular/interceptor/functional-files/__name@dasherize____typeSeparator__interceptor.ts.template diff --git a/packages/schematics/angular/interceptor/index_spec.ts b/packages/schematics/angular/interceptor/index_spec.ts index 8a9286f76fff..a657ee7e4225 100755 --- a/packages/schematics/angular/interceptor/index_spec.ts +++ b/packages/schematics/angular/interceptor/index_spec.ts @@ -46,9 +46,31 @@ describe('Interceptor Schematic', () => { const tree = await schematicRunner.runSchematic('interceptor', options, appTree); + const files = tree.files; + expect(files).toContain('/projects/bar/src/app/foo/foo-interceptor.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-interceptor.ts'); + }); + + it('should use a `.` type separator when specified', async () => { + const options = { ...defaultOptions, typeSeparator: '.' }; + + const tree = await schematicRunner.runSchematic('interceptor', options, appTree); const files = tree.files; expect(files).toContain('/projects/bar/src/app/foo/foo.interceptor.spec.ts'); expect(files).toContain('/projects/bar/src/app/foo/foo.interceptor.ts'); + const specContent = tree.readContent('/projects/bar/src/app/foo/foo.interceptor.spec.ts'); + expect(specContent).toContain(`'./foo.interceptor'`); + }); + + it('should use a `-` type separator when specified', async () => { + const options = { ...defaultOptions, typeSeparator: '-' }; + + const tree = await schematicRunner.runSchematic('interceptor', options, appTree); + const files = tree.files; + expect(files).toContain('/projects/bar/src/app/foo/foo-interceptor.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-interceptor.ts'); + const specContent = tree.readContent('/projects/bar/src/app/foo/foo-interceptor.spec.ts'); + expect(specContent).toContain(`'./foo-interceptor'`); }); it('should respect the skipTests flag', async () => { @@ -57,8 +79,8 @@ describe('Interceptor Schematic', () => { const tree = await schematicRunner.runSchematic('interceptor', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.interceptor.ts'); - expect(files).not.toContain('/projects/bar/src/app/foo/foo.interceptor.spec.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-interceptor.ts'); + expect(files).not.toContain('/projects/bar/src/app/foo/foo-interceptor.spec.ts'); }); it('should respect the sourceRoot value', async () => { @@ -67,7 +89,7 @@ describe('Interceptor Schematic', () => { appTree.overwrite('/angular.json', JSON.stringify(config, null, 2)); appTree = await schematicRunner.runSchematic('interceptor', defaultOptions, appTree); - expect(appTree.files).toContain('/projects/bar/custom/app/foo/foo.interceptor.ts'); + expect(appTree.files).toContain('/projects/bar/custom/app/foo/foo-interceptor.ts'); }); it('should create a functional interceptor', async () => { @@ -77,7 +99,7 @@ describe('Interceptor Schematic', () => { appTree, ); - const fileString = tree.readContent('/projects/bar/src/app/foo/foo.interceptor.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo/foo-interceptor.ts'); expect(fileString).toContain( 'export const fooInterceptor: HttpInterceptorFn = (req, next) => {', ); @@ -90,7 +112,7 @@ describe('Interceptor Schematic', () => { appTree, ); - const fileString = tree.readContent('/projects/bar/src/app/foo/foo.interceptor.spec.ts'); + const fileString = tree.readContent('/projects/bar/src/app/foo/foo-interceptor.spec.ts'); expect(fileString).toContain('const interceptor: HttpInterceptorFn = (req, next) => '); expect(fileString).toContain('TestBed.runInInjectionContext(() => fooInterceptor(req, next));'); }); diff --git a/packages/schematics/angular/interceptor/schema.json b/packages/schematics/angular/interceptor/schema.json index ff072a5557d2..e42e0c675e8e 100755 --- a/packages/schematics/angular/interceptor/schema.json +++ b/packages/schematics/angular/interceptor/schema.json @@ -45,6 +45,12 @@ "type": "boolean", "description": "Creates the interceptor as a function `HttpInterceptorFn` instead of a class. Functional interceptors can be simpler for basic scenarios.", "default": true + }, + "typeSeparator": { + "type": "string", + "default": "-", + "enum": ["-", "."], + "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.interceptor.ts`." } }, "required": ["name", "project"] diff --git a/tests/legacy-cli/e2e/tests/generate/interceptor/interceptor-basic.ts b/tests/legacy-cli/e2e/tests/generate/interceptor/interceptor-basic.ts index 5046f2603da6..7dd0b48c439b 100755 --- a/tests/legacy-cli/e2e/tests/generate/interceptor/interceptor-basic.ts +++ b/tests/legacy-cli/e2e/tests/generate/interceptor/interceptor-basic.ts @@ -7,10 +7,10 @@ export default function () { const interceptorDir = join('src', 'app'); return ( - ng('generate', 'interceptor', 'test-interceptor') + ng('generate', 'interceptor', 'test') .then(() => expectFileToExist(interceptorDir)) - .then(() => expectFileToExist(join(interceptorDir, 'test-interceptor.interceptor.ts'))) - .then(() => expectFileToExist(join(interceptorDir, 'test-interceptor.interceptor.spec.ts'))) + .then(() => expectFileToExist(join(interceptorDir, 'test-interceptor.ts'))) + .then(() => expectFileToExist(join(interceptorDir, 'test-interceptor.spec.ts'))) // Try to run the unit tests. .then(() => ng('test', '--watch=false')) From 31e9b1277ae050dbd88a4e5b5a32c814938a6b76 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 7 Apr 2025 14:04:21 +0000 Subject: [PATCH 128/160] build: update devinfra digest to 849c602 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index d3c8175a6e21..67e36ed51d84 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "e4bf37af223483ce00f9316d227fd62cd744dc4b", + commit = "849c602a3585397b0680aaeb7fe82730fd1c4215", remote = "https://github.com/angular/dev-infra.git", ) From 2016e53d446eb745b29a858d94d7e8ca6a7f2afa Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 7 Apr 2025 10:03:39 +0000 Subject: [PATCH 129/160] build: lock file maintenance --- pnpm-lock.yaml | 483 +++++++++++++++++++++---------------------------- 1 file changed, 210 insertions(+), 273 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 414ec2018c64..7da702ab9f70 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,7 +91,7 @@ importers: version: 7.20.5 '@types/babel__generator': specifier: ^7.6.8 - version: 7.6.8 + version: 7.27.0 '@types/browser-sync': specifier: ^2.27.0 version: 2.29.0 @@ -124,7 +124,7 @@ importers: version: 4.17.16 '@types/node': specifier: ^20.17.19 - version: 20.17.28 + version: 20.17.30 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -271,7 +271,7 @@ importers: version: 3.0.2 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@20.17.28)(rollup@4.39.0) + version: 0.6.3(@types/node@20.17.30)(rollup@4.39.0) semver: specifier: 7.7.1 version: 7.7.1 @@ -286,7 +286,7 @@ importers: version: 7.4.3 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@20.17.28)(typescript@5.8.3) + version: 10.9.2(@types/node@20.17.30)(typescript@5.8.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -354,10 +354,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.9 - version: 5.1.9(@types/node@20.17.28) + version: 5.1.9(@types/node@20.17.30) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) beasties: specifier: 0.2.0 version: 0.2.0 @@ -411,7 +411,7 @@ importers: version: 0.2.12 vite: specifier: 6.2.5 - version: 6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) + version: 6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -452,10 +452,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.4.1 - version: 7.4.1(@types/node@20.17.28) + version: 7.4.1(@types/node@20.17.30) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.4.1(@types/node@20.17.28)) + version: 2.0.18(@inquirer/prompts@7.4.1(@types/node@20.17.30)) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -616,7 +616,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -827,7 +827,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.4.1 - version: 7.4.1(@types/node@20.17.28) + version: 7.4.1(@types/node@20.17.30) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1689,14 +1689,18 @@ packages: resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.0': - resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} + '@eslint/config-helpers@0.2.1': + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.12.0': resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1709,8 +1713,8 @@ packages: resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.7': - resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@glideapps/ts-necessities@2.2.3': @@ -2360,8 +2364,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.8.0': - resolution: {integrity: sha512-yTwt2KWRmCQAfhvbCRjebaSX8pV1//I0Y3g+A7f/eS7gf0l4eRJoUCvcYdVtboeU4CTOZQuqYbZNS8aBYb8ROQ==} + '@puppeteer/browsers@2.9.0': + resolution: {integrity: sha512-8+xM+cFydYET4X/5/3yZMHs7sjS6c9I6H5I3xJdb6cinzxWUT/I2QVw4avxCQ8QDndwdHkG/FiSZIrCjAbaKvQ==} engines: {node: '>=18'} hasBin: true @@ -2522,8 +2526,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/wasm-node@4.38.0': - resolution: {integrity: sha512-WgdJf6XyQ5x4qaHbjGjsqWqgg2L4WNNRsQPl80agmFX6Kdobe+FsUn116lnR7lbtiAucgI4ywGYuAoew8RHb8w==} + '@rollup/wasm-node@4.39.0': + resolution: {integrity: sha512-hSzvI7Rd7mCw1OI/pkkmwPAlzSTJ2uspxti8yZR0ZRSoHLJuuWCTxGnbdCC3U9bSxtLQwvE0DyXSrj3BtoIl5g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2599,8 +2603,8 @@ packages: '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} @@ -2755,8 +2759,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@20.17.28': - resolution: {integrity: sha512-DHlH/fNL6Mho38jTy7/JT7sn2wnXI+wULR6PV4gy4VHLVvnrV/d3pHAMQHhc4gjdLmK2ZiPoMxzp6B3yRajLSQ==} + '@types/node@20.17.30': + resolution: {integrity: sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -2864,8 +2868,8 @@ packages: '@types/ws@7.4.7': resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - '@types/ws@8.18.0': - resolution: {integrity: sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -2894,10 +2898,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.3 - '@typescript-eslint/scope-manager@8.28.0': - resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.29.0': resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2909,33 +2909,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.3 - '@typescript-eslint/types@8.28.0': - resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.29.0': resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.28.0': - resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: 5.8.3 - '@typescript-eslint/typescript-estree@8.29.0': resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.8.3 - '@typescript-eslint/utils@8.28.0': - resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: 5.8.3 - '@typescript-eslint/utils@8.29.0': resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2943,10 +2926,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.3 - '@typescript-eslint/visitor-keys@8.28.0': - resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.29.0': resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3036,8 +3015,8 @@ packages: resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} engines: {node: '>=18.0.0'} - '@web/config-loader@0.3.2': - resolution: {integrity: sha512-Vrjv/FexBGmAdnCYpJKLHX1dfT1UaUdvHmX1JRaWos9OvDf/tFznYJ5SpJwww3Rl87/ewvLSYG7kfsMqEAsizQ==} + '@web/config-loader@0.3.3': + resolution: {integrity: sha512-ilzeQzrPpPLWZhzFCV+4doxKDGm7oKVfdKpW9wiUNVgive34NSzCw+WzXTvjE4Jgr5CkyTDIObEmMrqQEjhT0g==} engines: {node: '>=18.0.0'} '@web/dev-server-core@0.7.5': @@ -3421,8 +3400,8 @@ packages: bare-events@2.5.4: resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - bare-fs@4.0.2: - resolution: {integrity: sha512-S5mmkMesiduMqnz51Bfh0Et9EX0aTCJxhsI4bvzFFLs8Z1AV8RDHadfY5CyLwdoLHgXbNBEN1gQcbEtGwuvixw==} + bare-fs@4.1.2: + resolution: {integrity: sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -3481,8 +3460,8 @@ packages: big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + bignumber.js@9.2.0: + resolution: {integrity: sha512-JocpCSOixzy5XFJi2ub6IMmV/G9i8Lrm2lZvwBv9xPdglmZM0ufDVBbjbrfU/zuLvBfD7Bv2eYxz9i+OHTgkew==} binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -3608,8 +3587,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001707: - resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + caniuse-lite@1.0.30001712: + resolution: {integrity: sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -3664,8 +3643,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-bidi@2.1.2: - resolution: {integrity: sha512-vtRWBK2uImo5/W2oG6/cDkkHSm+2t6VHgnj+Rcwhb0pP74OoUb4GipyRX/T/y39gYQPhioP0DPShn+A7P6CHNw==} + chromium-bidi@3.0.0: + resolution: {integrity: sha512-ZOGRDAhBMX1uxL2Cm2TDuhImbrsEz5A/tTcVU6RpXEWaTNUNwsHW6njUXizh51Ir6iqHbKAfhA2XK33uBcLo5A==} peerDependencies: devtools-protocol: '*' @@ -4091,8 +4070,8 @@ packages: devtools-protocol@0.0.1045489: resolution: {integrity: sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==} - devtools-protocol@0.0.1413902: - resolution: {integrity: sha512-yRtvFD8Oyk7C9Os3GmnFZLu53yAfsnyw1s+mLmHHUK0GQEc9zthHWvS1r67Zqzm5t7v56PILHIVZ7kmFMaL2yQ==} + devtools-protocol@0.0.1425554: + resolution: {integrity: sha512-uRfxR6Nlzdzt0ihVIkV+sLztKgs7rgquY/Mhcv1YNCWDh5IZgl5mnn2aeEnW5stYTE0wwiF4RYVz8eMEpV1SEw==} di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} @@ -4163,8 +4142,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.128: - resolution: {integrity: sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==} + electron-to-chromium@1.5.132: + resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -5532,8 +5511,8 @@ packages: resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} engines: {node: '>= 7.6.0'} - koa@2.16.0: - resolution: {integrity: sha512-Afhqq0Vq3W7C+/rW6IqHVBDLzqObwZ07JaUNUEF8yCQ6afiyFE3RAy+i7V0E46XOWlH7vPWn/x0vsZwNy6PWxw==} + koa@2.16.1: + resolution: {integrity: sha512-umfX9d3iuSxTQP4pnzLOz0HKnPg0FaUUIKcye2lOiz3KPu1Y3M3xlz76dISdFPQs37P9eJz1wUpcTS6KDPn9fA==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} launch-editor@2.10.0: @@ -5849,8 +5828,8 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - minizlib@3.0.1: - resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} mitt@1.2.0: @@ -6002,8 +5981,8 @@ packages: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true - node-gyp@11.1.0: - resolution: {integrity: sha512-/+7TuHKnBpnMvUQnsYEb0JOozDZqarQbfNuSGLXIjhStMT0fbw7IdSqWgopOP5xhRZE+lsbIvAHcekddruPZgQ==} + node-gyp@11.2.0: + resolution: {integrity: sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true @@ -6583,8 +6562,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.4.0: - resolution: {integrity: sha512-eFw66gCnWo0X8Hyf9KxxJtms7a61NJVMiSaWfItsFPzFBsjsWdmcNlBdsA1WVwln6neoHhsG+uTVesKmTREn/g==} + puppeteer-core@24.6.0: + resolution: {integrity: sha512-Cukxysy12m0v350bhl/Gzof0XQYmtON9l2VvGp3D4BOQZVgyf+y5wIpcjDZQ/896Okoi95dKRGRV8E6a7SYAQQ==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -6786,10 +6765,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true - rollup-license-plugin@3.0.2: resolution: {integrity: sha512-68LWDlUKxqLO4Si3Extca4X7P99tU7s0KLnVUzN6h6SDihGAWYMQ0q73XLnHbUmG0IFgvC0AzuYvbogceQ9Hcw==} engines: {node: '>=18.0.0'} @@ -8922,12 +8897,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.0': {} + '@eslint/config-helpers@0.2.1': {} '@eslint/core@0.12.0': dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -8946,9 +8925,9 @@ snapshots: '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.7': + '@eslint/plugin-kit@0.2.8': dependencies: - '@eslint/core': 0.12.0 + '@eslint/core': 0.13.0 levn: 0.4.1 '@glideapps/ts-necessities@2.2.3': {} @@ -9038,27 +9017,27 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/checkbox@4.1.5(@types/node@20.17.28)': + '@inquirer/checkbox@4.1.5(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.30) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/confirm@5.1.9(@types/node@20.17.28)': + '@inquirer/confirm@5.1.9(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) + '@inquirer/type': 3.0.6(@types/node@20.17.30) optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/core@10.1.10(@types/node@20.17.28)': + '@inquirer/core@10.1.10(@types/node@20.17.30)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.30) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -9066,97 +9045,97 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/editor@4.2.10(@types/node@20.17.28)': + '@inquirer/editor@4.2.10(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) + '@inquirer/type': 3.0.6(@types/node@20.17.30) external-editor: 3.1.0 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/expand@4.0.12(@types/node@20.17.28)': + '@inquirer/expand@4.0.12(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) + '@inquirer/type': 3.0.6(@types/node@20.17.30) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.9(@types/node@20.17.28)': + '@inquirer/input@4.1.9(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) + '@inquirer/type': 3.0.6(@types/node@20.17.30) optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/number@3.0.12(@types/node@20.17.28)': + '@inquirer/number@3.0.12(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) + '@inquirer/type': 3.0.6(@types/node@20.17.30) optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/password@4.0.12(@types/node@20.17.28)': + '@inquirer/password@4.0.12(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) + '@inquirer/type': 3.0.6(@types/node@20.17.30) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 20.17.28 - - '@inquirer/prompts@7.4.1(@types/node@20.17.28)': - dependencies: - '@inquirer/checkbox': 4.1.5(@types/node@20.17.28) - '@inquirer/confirm': 5.1.9(@types/node@20.17.28) - '@inquirer/editor': 4.2.10(@types/node@20.17.28) - '@inquirer/expand': 4.0.12(@types/node@20.17.28) - '@inquirer/input': 4.1.9(@types/node@20.17.28) - '@inquirer/number': 3.0.12(@types/node@20.17.28) - '@inquirer/password': 4.0.12(@types/node@20.17.28) - '@inquirer/rawlist': 4.0.12(@types/node@20.17.28) - '@inquirer/search': 3.0.12(@types/node@20.17.28) - '@inquirer/select': 4.1.1(@types/node@20.17.28) + '@types/node': 20.17.30 + + '@inquirer/prompts@7.4.1(@types/node@20.17.30)': + dependencies: + '@inquirer/checkbox': 4.1.5(@types/node@20.17.30) + '@inquirer/confirm': 5.1.9(@types/node@20.17.30) + '@inquirer/editor': 4.2.10(@types/node@20.17.30) + '@inquirer/expand': 4.0.12(@types/node@20.17.30) + '@inquirer/input': 4.1.9(@types/node@20.17.30) + '@inquirer/number': 3.0.12(@types/node@20.17.30) + '@inquirer/password': 4.0.12(@types/node@20.17.30) + '@inquirer/rawlist': 4.0.12(@types/node@20.17.30) + '@inquirer/search': 3.0.12(@types/node@20.17.30) + '@inquirer/select': 4.1.1(@types/node@20.17.30) optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/rawlist@4.0.12(@types/node@20.17.28)': + '@inquirer/rawlist@4.0.12(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) + '@inquirer/type': 3.0.6(@types/node@20.17.30) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/search@3.0.12(@types/node@20.17.28)': + '@inquirer/search@3.0.12(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.30) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@inquirer/select@4.1.1(@types/node@20.17.28)': + '@inquirer/select@4.1.1(@types/node@20.17.30)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.28) + '@inquirer/core': 10.1.10(@types/node@20.17.30) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@20.17.28) + '@inquirer/type': 3.0.6(@types/node@20.17.30) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@inquirer/type@1.5.5': dependencies: mute-stream: 1.0.0 - '@inquirer/type@3.0.6(@types/node@20.17.28)': + '@inquirer/type@3.0.6(@types/node@20.17.30)': optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@isaacs/cliui@8.0.2': dependencies: @@ -9220,9 +9199,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.1(@types/node@20.17.28))': + '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.1(@types/node@20.17.30))': dependencies: - '@inquirer/prompts': 7.4.1(@types/node@20.17.28) + '@inquirer/prompts': 7.4.1(@types/node@20.17.30) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.2.6': @@ -9394,7 +9373,7 @@ snapshots: '@npmcli/node-gyp': 4.0.0 '@npmcli/package-json': 6.1.1 '@npmcli/promise-spawn': 8.0.2 - node-gyp: 11.1.0 + node-gyp: 11.2.0 proc-log: 5.0.0 which: 5.0.0 transitivePeerDependencies: @@ -9564,7 +9543,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.8.0': + '@puppeteer/browsers@2.9.0': dependencies: debug: 4.4.0(supports-color@10.0.0) extract-zip: 2.0.1 @@ -9694,7 +9673,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.39.0': optional: true - '@rollup/wasm-node@4.38.0': + '@rollup/wasm-node@4.39.0': dependencies: '@types/estree': 1.0.7 optionalDependencies: @@ -9738,7 +9717,7 @@ snapshots: '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) eslint: 9.23.0(jiti@1.21.7) eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -9769,7 +9748,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/babel__code-frame@7.0.6': {} @@ -9777,11 +9756,11 @@ snapshots: dependencies: '@babel/parser': 7.27.0 '@babel/types': 7.27.0 - '@types/babel__generator': 7.6.8 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: '@babel/types': 7.27.0 @@ -9799,16 +9778,16 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/browser-sync@2.29.0': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/serve-static': 1.15.7 chokidar: 3.6.0 @@ -9816,7 +9795,7 @@ snapshots: '@types/co-body@6.1.3': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/qs': 6.9.18 '@types/command-line-args@5.2.3': {} @@ -9824,11 +9803,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.6 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/connect@3.4.38': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/content-disposition@0.5.8': {} @@ -9839,17 +9818,17 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.1 '@types/keygrip': 1.0.6 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/cors@2.8.17': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/debounce@1.2.4': {} '@types/duplexify@3.6.4': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/eslint-scope@3.7.7': dependencies: @@ -9867,14 +9846,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -9895,11 +9874,11 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/http-assert@1.5.6': {} @@ -9907,7 +9886,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/ini@4.1.1': {} @@ -9933,7 +9912,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -9953,13 +9932,13 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/less@3.0.8': {} '@types/loader-utils@2.0.6': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/webpack': 4.41.40 '@types/lodash@4.17.16': {} @@ -9976,14 +9955,14 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 form-data: 4.0.2 '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@types/node@20.17.28': + '@types/node@20.17.30': dependencies: undici-types: 6.19.8 @@ -9991,7 +9970,7 @@ snapshots: '@types/npm-registry-fetch@8.0.7': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/node-fetch': 2.6.12 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -9999,11 +9978,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/pacote@11.1.8': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/npm-registry-fetch': 8.0.7 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -10016,12 +9995,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/pumpify@1.4.4': dependencies: '@types/duplexify': 3.6.4 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/q@0.0.32': {} @@ -10032,13 +10011,13 @@ snapshots: '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/tough-cookie': 4.0.5 form-data: 2.5.3 '@types/resolve@1.17.1': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/resolve@1.20.2': {} @@ -10053,7 +10032,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/serve-index@1.9.4': dependencies: @@ -10062,23 +10041,23 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/send': 0.17.4 '@types/shelljs@0.8.15': dependencies: '@types/glob': 7.2.0 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/source-list-map@0.1.6': {} '@types/ssri@7.1.5': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/stack-trace@0.0.33': {} @@ -10097,17 +10076,17 @@ snapshots: '@types/watchpack@2.4.4': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/webpack-sources@3.2.3': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/source-list-map': 0.1.6 source-map: 0.7.4 '@types/webpack@4.41.40': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -10116,11 +10095,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 - '@types/ws@8.18.0': + '@types/ws@8.18.1': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 '@types/yargs-parser@21.0.3': {} @@ -10132,7 +10111,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 optional: true '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': @@ -10164,11 +10143,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.28.0': - dependencies: - '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/visitor-keys': 8.28.0 - '@typescript-eslint/scope-manager@8.29.0': dependencies: '@typescript-eslint/types': 8.29.0 @@ -10185,24 +10159,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.28.0': {} - '@typescript-eslint/types@8.29.0': {} - '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/visitor-keys': 8.28.0 - debug: 4.4.0(supports-color@10.0.0) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 8.29.0 @@ -10217,17 +10175,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.28.0 - '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.3) - eslint: 9.23.0(jiti@1.21.7) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) @@ -10239,11 +10186,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.28.0': - dependencies: - '@typescript-eslint/types': 8.28.0 - eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.29.0': dependencies: '@typescript-eslint/types': 8.29.0 @@ -10396,15 +10338,15 @@ snapshots: minimatch: 7.4.6 semver: 7.7.1 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': dependencies: - vite: 6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) '@web/browser-logs@0.4.1': dependencies: errorstacks: 2.4.1 - '@web/config-loader@0.3.2': {} + '@web/config-loader@0.3.3': {} '@web/dev-server-core@0.7.5': dependencies: @@ -10417,7 +10359,7 @@ snapshots: get-stream: 6.0.1 is-stream: 2.0.1 isbinaryfile: 5.0.4 - koa: 2.16.0 + koa: 2.16.1 koa-etag: 4.0.0 koa-send: 5.0.1 koa-static: 5.0.0 @@ -10448,7 +10390,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@types/command-line-args': 5.2.3 - '@web/config-loader': 0.3.2 + '@web/config-loader': 0.3.3 '@web/dev-server-core': 0.7.5 '@web/dev-server-rollup': 0.6.4 camelcase: 6.3.0 @@ -10476,7 +10418,7 @@ snapshots: '@web/test-runner-coverage-v8': 0.8.0 async-mutex: 0.4.0 chrome-launcher: 0.15.2 - puppeteer-core: 24.4.0 + puppeteer-core: 24.6.0 transitivePeerDependencies: - bare-buffer - bufferutil @@ -10548,7 +10490,7 @@ snapshots: '@web/test-runner@0.20.0': dependencies: '@web/browser-logs': 0.4.1 - '@web/config-loader': 0.3.2 + '@web/config-loader': 0.3.3 '@web/dev-server': 0.4.6 '@web/test-runner-chrome': 0.18.0 '@web/test-runner-commands': 0.9.0 @@ -10870,7 +10812,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 + caniuse-lite: 1.0.30001712 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -10922,7 +10864,7 @@ snapshots: bare-events@2.5.4: optional: true - bare-fs@4.0.2: + bare-fs@4.1.2: dependencies: bare-events: 2.5.4 bare-path: 3.0.0 @@ -10975,7 +10917,7 @@ snapshots: big.js@6.2.2: {} - bignumber.js@9.1.2: {} + bignumber.js@9.2.0: {} binary-extensions@2.3.0: {} @@ -11104,8 +11046,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001707 - electron-to-chromium: 1.5.128 + caniuse-lite: 1.0.30001712 + electron-to-chromium: 1.5.132 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -11184,7 +11126,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001707: {} + caniuse-lite@1.0.30001712: {} caseless@0.12.0: {} @@ -11241,7 +11183,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -11250,9 +11192,9 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@2.1.2(devtools-protocol@0.0.1413902): + chromium-bidi@3.0.0(devtools-protocol@0.0.1425554): dependencies: - devtools-protocol: 0.0.1413902 + devtools-protocol: 0.0.1425554 mitt: 3.0.1 zod: 3.24.2 @@ -11651,7 +11593,7 @@ snapshots: devtools-protocol@0.0.1045489: {} - devtools-protocol@0.0.1413902: {} + devtools-protocol@0.0.1425554: {} di@0.0.1: {} @@ -11737,7 +11679,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.128: {} + electron-to-chromium@1.5.132: {} emoji-regex@10.4.0: {} @@ -11777,7 +11719,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 20.17.28 + '@types/node': 20.17.30 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -12030,11 +11972,11 @@ snapshots: '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.2 - '@eslint/config-helpers': 0.2.0 + '@eslint/config-helpers': 0.2.1 '@eslint/core': 0.12.0 '@eslint/eslintrc': 3.3.1 '@eslint/js': 9.23.0 - '@eslint/plugin-kit': 0.2.7 + '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 @@ -12211,7 +12153,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.0(supports-color@10.0.0) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -13191,7 +13133,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13215,7 +13157,7 @@ snapshots: json-bigint@1.0.0: dependencies: - bignumber.js: 9.1.2 + bignumber.js: 9.2.0 json-buffer@3.0.1: {} @@ -13405,7 +13347,7 @@ snapshots: transitivePeerDependencies: - supports-color - koa@2.16.0: + koa@2.16.1: dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 @@ -13725,7 +13667,7 @@ snapshots: dependencies: minipass: 7.1.2 minipass-sized: 1.0.3 - minizlib: 3.0.1 + minizlib: 3.0.2 optionalDependencies: encoding: 0.1.13 @@ -13754,10 +13696,9 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - minizlib@3.0.1: + minizlib@3.0.2: dependencies: minipass: 7.1.2 - rimraf: 5.0.10 mitt@1.2.0: {} @@ -13834,7 +13775,7 @@ snapshots: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) '@rollup/plugin-json': 6.1.0(rollup@4.39.0) - '@rollup/wasm-node': 4.38.0 + '@rollup/wasm-node': 4.39.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.4 @@ -13895,17 +13836,17 @@ snapshots: detect-libc: 2.0.3 optional: true - node-gyp@11.1.0: + node-gyp@11.2.0: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.2 - glob: 10.4.5 graceful-fs: 4.2.11 make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 semver: 7.7.1 tar: 7.4.3 + tinyglobby: 0.2.12 which: 5.0.0 transitivePeerDependencies: - supports-color @@ -13955,7 +13896,7 @@ snapshots: make-fetch-happen: 14.0.3 minipass: 7.1.2 minipass-fetch: 4.0.1 - minizlib: 3.0.1 + minizlib: 3.0.2 npm-package-arg: 12.0.2 proc-log: 5.0.0 transitivePeerDependencies: @@ -14398,7 +14339,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.17.28 + '@types/node': 20.17.30 long: 5.3.1 protractor@7.0.0: @@ -14486,12 +14427,12 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.4.0: + puppeteer-core@24.6.0: dependencies: - '@puppeteer/browsers': 2.8.0 - chromium-bidi: 2.1.2(devtools-protocol@0.0.1413902) + '@puppeteer/browsers': 2.9.0 + chromium-bidi: 3.0.0(devtools-protocol@0.0.1425554) debug: 4.4.0(supports-color@10.0.0) - devtools-protocol: 0.0.1413902 + devtools-protocol: 0.0.1425554 typed-query-selector: 2.12.0 ws: 8.18.1 transitivePeerDependencies: @@ -14758,10 +14699,6 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - rollup-license-plugin@3.0.2: dependencies: get-npm-tarball-url: 2.1.0 @@ -14776,13 +14713,13 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.26.2 - rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.28)(rollup@4.39.0): + rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.30)(rollup@4.39.0): dependencies: '@rollup/pluginutils': 3.1.0(rollup@4.39.0) rollup: 4.39.0 source-map-resolve: 0.6.0 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 rollup@4.39.0: dependencies: @@ -15423,7 +15360,7 @@ snapshots: pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.0.2 + bare-fs: 4.1.2 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -15456,7 +15393,7 @@ snapshots: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.1 + minizlib: 3.0.2 mkdirp: 3.0.1 yallist: 5.0.0 @@ -15568,14 +15505,14 @@ snapshots: dependencies: typescript: 5.8.3 - ts-node@10.9.2(@types/node@20.17.28)(typescript@5.8.3): + ts-node@10.9.2(@types/node@20.17.30)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.28 + '@types/node': 20.17.30 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15856,13 +15793,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.5(@types/node@20.17.28)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1): + vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 rollup: 4.39.0 optionalDependencies: - '@types/node': 20.17.28 + '@types/node': 20.17.30 fsevents: 2.3.3 jiti: 1.21.7 less: 4.2.2 @@ -15933,7 +15870,7 @@ snapshots: '@types/serve-index': 1.9.4 '@types/serve-static': 1.15.7 '@types/sockjs': 0.3.36 - '@types/ws': 8.18.0 + '@types/ws': 8.18.1 ansi-html-community: 0.0.8 bonjour-service: 1.3.0 chokidar: 3.6.0 From 661609e3e583198828baf236338db17b6222f4d8 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 7 Apr 2025 10:57:37 +0200 Subject: [PATCH 130/160] fix(@schematics/angular): set explicit type in library schematic Explicitly sets an empty `type` when the `library` calls into the `component` schematic for a few reasons: 1. The `type` for classes mostly makes sense in an application contenxt. E.g. libraries are unlikely to have guards. 2. The generated component is there primarily as an example and library authors are likely to either delete it or modify it to match their expected public API. 3. It ensures that the generated files remain correect if the `component` schematic ends up inheriting the `type` from the workspace. --- packages/schematics/angular/library/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index 68f9f8f513c4..52ca74bc65ce 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -181,6 +181,10 @@ export default function (options: LibraryOptions): Rule { export: true, standalone: options.standalone, project: packageName, + // Explicitly set an empty `type` since it doesn't necessarily make sense in a library. + // This also ensures that the generated files are valid even if the `component` schematic + // inherits its `type` from the workspace. + type: '', }), (_tree: Tree, context: SchematicContext) => { if (!options.skipPackageJson && !options.skipInstall) { From c3edfeb5ac88468a9ba2b0abfa37a9ed45901ef7 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 7 Apr 2025 10:03:06 +0000 Subject: [PATCH 131/160] build: update github/codeql-action action to v3.28.14 --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6ad9d6806a7e..79562ca40a9c 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -46,6 +46,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/upload-sarif@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 with: sarif_file: results.sarif From fc0e05fea89598204a7e5de494da897c396c4e52 Mon Sep 17 00:00:00 2001 From: Dmitriy Stepanenko Date: Mon, 7 Apr 2025 12:27:31 +0300 Subject: [PATCH 132/160] fix(@angular/build): skip normalization of relative externals --- .../angular/build/src/builders/application/options.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index f2950dcb9629..5600c1e633ad 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -707,7 +707,14 @@ function normalizeExternals(value: string[] | undefined): string[] | undefined { return undefined; } - return [...new Set(value.map((d) => (d.endsWith('/*') ? d.slice(0, -2) : d)))]; + return [ + ...new Set( + value.map((d) => + // remove "/*" wildcard in the end if provided string is not path-like + d.endsWith('/*') && !/^\.{0,2}\//.test(d) ? d.slice(0, -2) : d, + ), + ), + ]; } async function findFrameworkVersion(projectRoot: string): Promise { From 415165ebbaece53c28608e5a7614cef06ac912bf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:51:19 -0400 Subject: [PATCH 133/160] build: update webpack to v5.99.1 --- .../angular_devkit/build_angular/package.json | 2 +- .../plugins/index-html-webpack-plugin.ts | 2 +- .../webpack/plugins/remove-hash-plugin.ts | 2 +- .../angular_devkit/build_webpack/package.json | 2 +- .../angular_devkit/build_webpack/src/utils.ts | 2 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 100 +++++++++--------- 7 files changed, 56 insertions(+), 56 deletions(-) diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 6dd2af6b0854..ad4131ffb45a 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -56,7 +56,7 @@ "terser": "5.39.0", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.98.0", + "webpack": "5.99.1", "webpack-dev-middleware": "7.4.2", "webpack-dev-server": "5.2.1", "webpack-merge": "6.0.1", diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index-html-webpack-plugin.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index-html-webpack-plugin.ts index 14f7923e6435..9c1fdbbcccef 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index-html-webpack-plugin.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index-html-webpack-plugin.ts @@ -60,7 +60,7 @@ export class IndexHtmlWebpackPlugin extends IndexHtmlGenerator { } files.push({ - name: chunk.name, + name: chunk.name ?? undefined, file, extension: extname(file), }); diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/remove-hash-plugin.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/remove-hash-plugin.ts index bf213b19ec38..f4b8c3311689 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/remove-hash-plugin.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/remove-hash-plugin.ts @@ -19,7 +19,7 @@ export class RemoveHashPlugin { apply(compiler: Compiler): void { compiler.hooks.compilation.tap('remove-hash-plugin', (compilation) => { - const assetPath = (path: string, data: { chunk?: { name: string } }) => { + const assetPath = (path: string, data: { chunk?: { name?: string | null } }) => { const chunkName = data.chunk?.name; const { chunkNames, hashFormat } = this.options; diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 27074848d2c7..089e5d16dce5 100644 --- a/packages/angular_devkit/build_webpack/package.json +++ b/packages/angular_devkit/build_webpack/package.json @@ -22,7 +22,7 @@ "devDependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", - "webpack": "5.98.0", + "webpack": "5.99.1", "webpack-dev-server": "5.2.1" }, "peerDependencies": { diff --git a/packages/angular_devkit/build_webpack/src/utils.ts b/packages/angular_devkit/build_webpack/src/utils.ts index 218b85fbcb2a..7a0f228ec676 100644 --- a/packages/angular_devkit/build_webpack/src/utils.ts +++ b/packages/angular_devkit/build_webpack/src/utils.ts @@ -34,7 +34,7 @@ export function getEmittedFiles(compilation: Compilation): EmittedFiles[] { chunkFileNames.add(file); files.push({ id: chunk.id?.toString(), - name: chunk.name, + name: chunk.name ?? undefined, file, extension: path.extname(file), initial: chunk.isOnlyInitial(), diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 802984ad3689..9a9a42b18065 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "20.0.0-next.5", "@angular/compiler-cli": "20.0.0-next.5", "typescript": "5.8.3", - "webpack": "5.98.0" + "webpack": "5.99.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7da702ab9f70..7260ff46283a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -625,16 +625,16 @@ importers: version: 10.4.21(postcss@8.5.3) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.2)) + version: 10.0.0(@babel/core@7.26.10)(webpack@5.99.1(esbuild@0.25.2)) browserslist: specifier: ^4.21.5 version: 4.24.4 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.98.0(esbuild@0.25.2)) + version: 13.0.0(webpack@5.99.1(esbuild@0.25.2)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.98.0(esbuild@0.25.2)) + version: 7.1.2(webpack@5.99.1(esbuild@0.25.2)) esbuild-wasm: specifier: 0.25.2 version: 0.25.2 @@ -658,16 +658,16 @@ importers: version: 4.2.2 less-loader: specifier: 12.2.0 - version: 12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.2)) + version: 12.2.0(less@4.2.2)(webpack@5.99.1(esbuild@0.25.2)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.98.0(esbuild@0.25.2)) + version: 4.0.2(webpack@5.99.1(esbuild@0.25.2)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.2 - version: 2.9.2(webpack@5.98.0(esbuild@0.25.2)) + version: 2.9.2(webpack@5.99.1(esbuild@0.25.2)) open: specifier: 10.1.0 version: 10.1.0 @@ -685,7 +685,7 @@ importers: version: 8.5.3 postcss-loader: specifier: 8.1.1 - version: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.2)) + version: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.1(esbuild@0.25.2)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -697,13 +697,13 @@ importers: version: 1.86.3 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.86.3)(webpack@5.98.0(esbuild@0.25.2)) + version: 16.0.5(sass@1.86.3)(webpack@5.99.1(esbuild@0.25.2)) semver: specifier: 7.7.1 version: 7.7.1 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.98.0(esbuild@0.25.2)) + version: 5.0.0(webpack@5.99.1(esbuild@0.25.2)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -717,20 +717,20 @@ importers: specifier: 2.8.1 version: 2.8.1 webpack: - specifier: 5.98.0 - version: 5.98.0(esbuild@0.25.2) + specifier: 5.99.1 + version: 5.99.1(esbuild@0.25.2) webpack-dev-middleware: specifier: 7.4.2 - version: 7.4.2(webpack@5.98.0(esbuild@0.25.2)) + version: 7.4.2(webpack@5.99.1(esbuild@0.25.2)) webpack-dev-server: specifier: 5.2.1 - version: 5.2.1(webpack@5.98.0(esbuild@0.25.2)) + version: 5.2.1(webpack@5.99.1(esbuild@0.25.2)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.98.0(esbuild@0.25.2)) + version: 5.1.0(webpack@5.99.1(esbuild@0.25.2)) optionalDependencies: esbuild: specifier: 0.25.2 @@ -768,11 +768,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack webpack: - specifier: 5.98.0 - version: 5.98.0(esbuild@0.25.2) + specifier: 5.99.1 + version: 5.99.1(esbuild@0.25.2) webpack-dev-server: specifier: 5.2.1 - version: 5.2.1(webpack@5.98.0(esbuild@0.25.2)) + version: 5.2.1(webpack@5.99.1(esbuild@0.25.2)) packages/angular_devkit/core: dependencies: @@ -850,8 +850,8 @@ importers: specifier: 5.8.3 version: 5.8.3 webpack: - specifier: 5.98.0 - version: 5.98.0(esbuild@0.25.2) + specifier: 5.99.1 + version: 5.99.1(esbuild@0.25.2) packages/schematics/angular: dependencies: @@ -7753,8 +7753,8 @@ packages: html-webpack-plugin: optional: true - webpack@5.98.0: - resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} + webpack@5.99.1: + resolution: {integrity: sha512-o9gY7ibHPFxLjF6NtvQ6+5CGknsPTRllsL6SEnqR2Zhjk02hiIioJYLS7dvrWaykrRbbmhvDeKp36mKHNbKYiw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -10829,11 +10829,11 @@ snapshots: b4a@1.6.7: {} - babel-loader@10.0.0(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.2)): + babel-loader@10.0.0(@babel/core@7.26.10)(webpack@5.99.1(esbuild@0.25.2)): dependencies: '@babel/core': 7.26.10 find-up: 5.0.0 - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): dependencies: @@ -11366,14 +11366,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.0(webpack@5.98.0(esbuild@0.25.2)): + copy-webpack-plugin@13.0.0(webpack@5.99.1(esbuild@0.25.2)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 tinyglobby: 0.2.12 - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) core-js-compat@3.41.0: dependencies: @@ -11427,7 +11427,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.98.0(esbuild@0.25.2)): + css-loader@7.1.2(webpack@5.99.1(esbuild@0.25.2)): dependencies: icss-utils: 5.1.0(postcss@8.5.3) postcss: 8.5.3 @@ -11438,7 +11438,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) css-select@5.1.0: dependencies: @@ -13380,11 +13380,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.2 - less-loader@12.2.0(less@4.2.2)(webpack@5.98.0(esbuild@0.25.2)): + less-loader@12.2.0(less@4.2.2)(webpack@5.99.1(esbuild@0.25.2)): dependencies: less: 4.2.2 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) less@4.2.2: dependencies: @@ -13405,11 +13405,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.98.0(esbuild@0.25.2)): + license-webpack-plugin@4.0.2(webpack@5.99.1(esbuild@0.25.2)): dependencies: webpack-sources: 3.2.3 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) lie@3.3.0: dependencies: @@ -13637,11 +13637,11 @@ snapshots: mimic-function@5.0.1: {} - mini-css-extract-plugin@2.9.2(webpack@5.98.0(esbuild@0.25.2)): + mini-css-extract-plugin@2.9.2(webpack@5.99.1(esbuild@0.25.2)): dependencies: schema-utils: 4.3.0 tapable: 2.2.1 - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) minimalistic-assert@1.0.1: {} @@ -14255,14 +14255,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.2)): + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.1(esbuild@0.25.2)): dependencies: cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 semver: 7.7.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) transitivePeerDependencies: - typescript @@ -14796,12 +14796,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.86.3)(webpack@5.98.0(esbuild@0.25.2)): + sass-loader@16.0.5(sass@1.86.3)(webpack@5.99.1(esbuild@0.25.2)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.86.3 - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) sass@1.86.3: dependencies: @@ -15124,11 +15124,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.98.0(esbuild@0.25.2)): + source-map-loader@5.0.0(webpack@5.99.1(esbuild@0.25.2)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) source-map-resolve@0.6.0: dependencies: @@ -15408,14 +15408,14 @@ snapshots: - encoding - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.25.2)(webpack@5.98.0(esbuild@0.25.2)): + terser-webpack-plugin@5.3.14(esbuild@0.25.2)(webpack@5.99.1(esbuild@0.25.2)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) optionalDependencies: esbuild: 0.25.2 @@ -15850,7 +15850,7 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.25.2)): + webpack-dev-middleware@7.4.2(webpack@5.99.1(esbuild@0.25.2)): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -15859,9 +15859,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.0 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) - webpack-dev-server@5.2.1(webpack@5.98.0(esbuild@0.25.2)): + webpack-dev-server@5.2.1(webpack@5.99.1(esbuild@0.25.2)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -15889,10 +15889,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.2)) + webpack-dev-middleware: 7.4.2(webpack@5.99.1(esbuild@0.25.2)) ws: 8.18.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) transitivePeerDependencies: - bufferutil - debug @@ -15907,12 +15907,12 @@ snapshots: webpack-sources@3.2.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.98.0(esbuild@0.25.2)): + webpack-subresource-integrity@5.1.0(webpack@5.99.1(esbuild@0.25.2)): dependencies: typed-assert: 1.0.9 - webpack: 5.98.0(esbuild@0.25.2) + webpack: 5.99.1(esbuild@0.25.2) - webpack@5.98.0(esbuild@0.25.2): + webpack@5.99.1(esbuild@0.25.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -15934,7 +15934,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.25.2)(webpack@5.98.0(esbuild@0.25.2)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.2)(webpack@5.99.1(esbuild@0.25.2)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: From 31ed56451484a7becb77686a0506061a744945b1 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 7 Apr 2025 19:29:09 -0400 Subject: [PATCH 134/160] build: remove now unneeded platform-server package extension The `@angular/platform-server` package has been updated to correctly include a peer dependency on `rxjs` and no longer requires a custom package extension defined. --- package.json | 5 ----- pnpm-lock.yaml | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/package.json b/package.json index 38996b51e4a6..8a01094b8c3a 100644 --- a/package.json +++ b/package.json @@ -167,11 +167,6 @@ "peerDependencies": { "protobufjs": "*" } - }, - "@angular/platform-server": { - "peerDependencies": { - "rxjs": "*" - } } } }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7260ff46283a..1b22884f26c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,7 @@ overrides: typescript: 5.8.3 '@angular/build': workspace:* -packageExtensionsChecksum: ea5f588691095a73da0f9364791a5f26 +packageExtensionsChecksum: d67b1f07b351844d00c57cbace376860 importers: From b9aded301cb4274392bb7ef0a793cdbc97ebd2fd Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 7 Apr 2025 19:40:51 -0400 Subject: [PATCH 135/160] build: update `@rollup/plugin-node-resolve` to v16.0.1 --- package.json | 2 +- pnpm-lock.yaml | 50 ++++++++++++++++---------------------------------- 2 files changed, 17 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index 8a01094b8c3a..6b5c8a85dfa0 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^13.0.5", + "@rollup/plugin-node-resolve": "16.0.1", "@stylistic/eslint-plugin": "^4.0.0", "@types/babel__core": "7.20.5", "@types/babel__generator": "^7.6.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b22884f26c0..485b975d7090 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,8 +81,8 @@ importers: specifier: ^6.1.0 version: 6.1.0(rollup@4.39.0) '@rollup/plugin-node-resolve': - specifier: ^13.0.5 - version: 13.3.0(rollup@4.39.0) + specifier: 16.0.1 + version: 16.0.1(rollup@4.39.0) '@stylistic/eslint-plugin': specifier: ^4.0.0 version: 4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) @@ -2396,12 +2396,6 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@13.3.0': - resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^2.42.0 - '@rollup/plugin-node-resolve@15.3.1': resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} @@ -2411,6 +2405,15 @@ packages: rollup: optional: true + '@rollup/plugin-node-resolve@16.0.1': + resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@3.1.0': resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -2801,9 +2804,6 @@ packages: '@types/request@2.48.12': resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} - '@types/resolve@1.17.1': - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} - '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -3543,10 +3543,6 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} @@ -5053,10 +5049,6 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} - is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -9578,17 +9570,17 @@ snapshots: optionalDependencies: rollup: 4.39.0 - '@rollup/plugin-node-resolve@13.3.0(rollup@4.39.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.39.0) - '@types/resolve': 1.17.1 + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@types/resolve': 1.20.2 deepmerge: 4.3.1 - is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.10 + optionalDependencies: rollup: 4.39.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.39.0)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.39.0)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.39.0) '@types/resolve': 1.20.2 @@ -10015,10 +10007,6 @@ snapshots: '@types/tough-cookie': 4.0.5 form-data: 2.5.3 - '@types/resolve@1.17.1': - dependencies: - '@types/node': 20.17.30 - '@types/resolve@1.20.2': {} '@types/resolve@1.20.6': {} @@ -11075,8 +11063,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - builtin-modules@3.3.0: {} - bundle-name@4.1.0: dependencies: run-applescript: 7.0.0 @@ -12868,10 +12854,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-builtin-module@3.2.1: - dependencies: - builtin-modules: 3.3.0 - is-callable@1.2.7: {} is-core-module@2.16.1: From 25e858d222aa1003ebc1e3ab21b535b41704fb01 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 8 Apr 2025 07:03:44 +0000 Subject: [PATCH 136/160] build: update all non-major dependencies --- .github/workflows/codeql.yml | 4 +- WORKSPACE | 6 +- package.json | 10 +- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 270 +++++++++++------- 6 files changed, 182 insertions(+), 114 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index bffbbdd6a4d9..899774b4290a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,12 +23,12 @@ jobs: with: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 with: category: '/language:javascript-typescript' diff --git a/WORKSPACE b/WORKSPACE index 67e36ed51d84..037d99289902 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -31,9 +31,9 @@ build_bazel_rules_nodejs_dependencies() http_archive( name = "aspect_rules_js", - sha256 = "373e912bd986c38e54da82f15174984563866d14b60c5392e5b39e82b3bdf576", - strip_prefix = "rules_js-2.3.4", - url = "https://github.com/aspect-build/rules_js/releases/download/v2.3.4/rules_js-v2.3.4.tar.gz", + sha256 = "1be1a3ec3d3baec4a71bc09ce446eb59bb48ae31af63016481df1532a0d81aee", + strip_prefix = "rules_js-2.3.5", + url = "https://github.com/aspect-build/rules_js/releases/download/v2.3.5/rules_js-v2.3.5.tar.gz", ) load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") diff --git a/package.json b/package.json index 6b5c8a85dfa0..46720f72f994 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@bazel/buildifier": "8.0.3", "@eslint/compat": "1.2.8", "@eslint/eslintrc": "3.3.1", - "@eslint/js": "9.23.0", + "@eslint/js": "9.24.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-json": "^6.1.0", @@ -94,15 +94,15 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.29.0", - "@typescript-eslint/parser": "8.29.0", + "@typescript-eslint/eslint-plugin": "8.29.1", + "@typescript-eslint/parser": "8.29.1", "ajv": "8.17.1", "ansi-colors": "4.1.3", - "beasties": "0.2.0", + "beasties": "0.3.2", "buffer": "6.0.3", "esbuild": "0.25.2", "esbuild-wasm": "0.25.2", - "eslint": "9.23.0", + "eslint": "9.24.0", "eslint-config-prettier": "10.1.1", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.31.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index a6916102eb3e..9ad078b5b9d3 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -25,7 +25,7 @@ "@babel/helper-split-export-declaration": "7.24.7", "@inquirer/confirm": "5.1.9", "@vitejs/plugin-basic-ssl": "2.0.0", - "beasties": "0.2.0", + "beasties": "0.3.2", "browserslist": "^4.23.0", "esbuild": "0.25.2", "https-proxy-agent": "7.0.6", @@ -51,7 +51,7 @@ "devDependencies": { "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", - "less": "4.2.2", + "less": "4.3.0", "ng-packagr": "20.0.0-next.5", "postcss": "8.5.3", "rxjs": "7.8.2" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index ad4131ffb45a..e101b2f645b6 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -35,7 +35,7 @@ "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", - "less": "4.2.2", + "less": "4.3.0", "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 485b975d7090..2c36129a4705 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,13 +64,13 @@ importers: version: 8.0.3 '@eslint/compat': specifier: 1.2.8 - version: 1.2.8(eslint@9.23.0(jiti@1.21.7)) + version: 1.2.8(eslint@9.24.0(jiti@1.21.7)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 '@eslint/js': - specifier: 9.23.0 - version: 9.23.0 + specifier: 9.24.0 + version: 9.24.0 '@rollup/plugin-alias': specifier: ^5.1.1 version: 5.1.1(rollup@4.39.0) @@ -85,7 +85,7 @@ importers: version: 16.0.1(rollup@4.39.0) '@stylistic/eslint-plugin': specifier: ^4.0.0 - version: 4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) + version: 4.2.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -159,11 +159,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.29.0 - version: 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) + specifier: 8.29.1 + version: 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.29.0 - version: 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) + specifier: 8.29.1 + version: 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -171,8 +171,8 @@ importers: specifier: 4.1.3 version: 4.1.3 beasties: - specifier: 0.2.0 - version: 0.2.0 + specifier: 0.3.2 + version: 0.3.2 buffer: specifier: 6.0.3 version: 6.0.3 @@ -183,17 +183,17 @@ importers: specifier: 0.25.2 version: 0.25.2 eslint: - specifier: 9.23.0 - version: 9.23.0(jiti@1.21.7) + specifier: 9.24.0 + version: 9.24.0(jiti@1.21.7) eslint-config-prettier: specifier: 10.1.1 - version: 10.1.1(eslint@9.23.0(jiti@1.21.7)) + version: 10.1.1(eslint@9.24.0(jiti@1.21.7)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.23.0(jiti@1.21.7)) + version: 3.1.1(eslint@9.24.0(jiti@1.21.7)) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7)) + version: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.24.0(jiti@1.21.7)) express: specifier: 5.1.0 version: 5.1.0 @@ -357,10 +357,10 @@ importers: version: 5.1.9(@types/node@20.17.30) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) beasties: - specifier: 0.2.0 - version: 0.2.0 + specifier: 0.3.2 + version: 0.3.2 browserslist: specifier: ^4.23.0 version: 4.24.4 @@ -411,7 +411,7 @@ importers: version: 0.2.12 vite: specifier: 6.2.5 - version: 6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) + version: 6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -427,8 +427,8 @@ importers: specifier: workspace:* version: link:../ssr less: - specifier: 4.2.2 - version: 4.2.2 + specifier: 4.3.0 + version: 4.3.0 ng-packagr: specifier: 20.0.0-next.5 version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) @@ -616,7 +616,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -654,11 +654,11 @@ importers: specifier: 1.4.0 version: 1.4.0 less: - specifier: 4.2.2 - version: 4.2.2 + specifier: 4.3.0 + version: 4.3.0 less-loader: specifier: 12.2.0 - version: 12.2.0(less@4.2.2)(webpack@5.99.1(esbuild@0.25.2)) + version: 12.2.0(less@4.3.0)(webpack@5.99.1(esbuild@0.25.2)) license-webpack-plugin: specifier: 4.0.2 version: 4.0.2(webpack@5.99.1(esbuild@0.25.2)) @@ -1685,8 +1685,8 @@ packages: eslint: optional: true - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/config-helpers@0.2.1': @@ -1705,8 +1705,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.23.0': - resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} + '@eslint/js@9.24.0': + resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -2883,16 +2883,16 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.29.0': - resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} + '@typescript-eslint/eslint-plugin@8.29.1': + resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.3 - '@typescript-eslint/parser@8.29.0': - resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} + '@typescript-eslint/parser@8.29.1': + resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2902,8 +2902,12 @@ packages: resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.29.0': - resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} + '@typescript-eslint/scope-manager@8.29.1': + resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.29.1': + resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2913,12 +2917,22 @@ packages: resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.29.1': + resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.29.0': resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.8.3 + '@typescript-eslint/typescript-estree@8.29.1': + resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: 5.8.3 + '@typescript-eslint/utils@8.29.0': resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2926,10 +2940,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.3 + '@typescript-eslint/utils@8.29.1': + resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: 5.8.3 + '@typescript-eslint/visitor-keys@8.29.0': resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.29.1': + resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@verdaccio/auth@8.0.0-next-8.15': resolution: {integrity: sha512-vAfzGOHbPcPXMCI90jqm/qSZ1OUBnOGzudZA3+YtherncdwADekvXbdJlZVclcfmZ0sRbfVG5Xpf88aETiwfcw==} engines: {node: '>=18'} @@ -3447,8 +3472,8 @@ packages: bcryptjs@2.4.3: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - beasties@0.2.0: - resolution: {integrity: sha512-Ljqskqx/tbZagIglYoJIMzH5zgssyp+in9+9sAyh15N22AornBeIDnb8EZ6Rk+6ShfMxd92uO3gfpT0NtZbpow==} + beasties@0.3.2: + resolution: {integrity: sha512-p4AF8uYzm9Fwu8m/hSVTCPXrRBPmB34hQpHsec2KOaR9CZmgoU8IOv4Cvwq4hgz2p4hLMNbsdNl5XeA6XbAQwA==} engines: {node: '>=14.0.0'} before-after-hook@3.0.2: @@ -4191,6 +4216,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -4345,8 +4374,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.23.0: - resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} + eslint@9.24.0: + resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4834,8 +4863,8 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - htmlparser2@9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} http-assert@1.5.0: resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} @@ -5523,9 +5552,9 @@ packages: webpack: optional: true - less@4.2.2: - resolution: {integrity: sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==} - engines: {node: '>=6'} + less@4.3.0: + resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==} + engines: {node: '>=14'} hasBin: true levn@0.4.1: @@ -8870,18 +8899,18 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true - '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.5.1(eslint@9.24.0(jiti@1.21.7))': dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.8(eslint@9.23.0(jiti@1.21.7))': + '@eslint/compat@1.2.8(eslint@9.24.0(jiti@1.21.7))': optionalDependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) - '@eslint/config-array@0.19.2': + '@eslint/config-array@0.20.0': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.0(supports-color@10.0.0) @@ -8913,7 +8942,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.23.0': {} + '@eslint/js@9.24.0': {} '@eslint/object-schema@2.1.6': {} @@ -9707,10 +9736,10 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': + '@stylistic/eslint-plugin@4.2.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) - eslint: 9.23.0(jiti@1.21.7) + '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) + eslint: 9.24.0(jiti@1.21.7) eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -10102,15 +10131,15 @@ snapshots: '@types/node': 20.17.30 optional: true - '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.29.0 - eslint: 9.23.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/type-utils': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.1 + eslint: 9.24.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -10119,14 +10148,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.1 debug: 4.4.0(supports-color@10.0.0) - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -10136,12 +10165,17 @@ snapshots: '@typescript-eslint/types': 8.29.0 '@typescript-eslint/visitor-keys': 8.29.0 - '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/scope-manager@8.29.1': dependencies: - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 + + '@typescript-eslint/type-utils@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) debug: 4.4.0(supports-color@10.0.0) - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -10149,6 +10183,8 @@ snapshots: '@typescript-eslint/types@8.29.0': {} + '@typescript-eslint/types@8.29.1': {} + '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 8.29.0 @@ -10163,13 +10199,38 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.29.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 + debug: 4.4.0(supports-color@10.0.0) + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.24.0(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.29.0 '@typescript-eslint/types': 8.29.0 '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.24.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + eslint: 9.24.0(jiti@1.21.7) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -10179,6 +10240,11 @@ snapshots: '@typescript-eslint/types': 8.29.0 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.29.1': + dependencies: + '@typescript-eslint/types': 8.29.1 + eslint-visitor-keys: 4.2.0 + '@verdaccio/auth@8.0.0-next-8.15': dependencies: '@verdaccio/config': 8.0.0-next-8.15 @@ -10326,9 +10392,9 @@ snapshots: minimatch: 7.4.6 semver: 7.7.1 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': dependencies: - vite: 6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) '@web/browser-logs@0.4.1': dependencies: @@ -10888,13 +10954,13 @@ snapshots: bcryptjs@2.4.3: {} - beasties@0.2.0: + beasties@0.3.2: dependencies: css-select: 5.1.0 css-what: 6.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - htmlparser2: 9.1.0 + htmlparser2: 10.0.0 picocolors: 1.1.1 postcss: 8.5.3 postcss-media-query-parser: 0.2.3 @@ -11732,6 +11798,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.0: {} + env-paths@2.2.1: {} envinfo@7.14.0: {} @@ -11884,9 +11952,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@1.21.7)): + eslint-config-prettier@10.1.1(eslint@9.24.0(jiti@1.21.7)): dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) eslint-import-resolver-node@0.3.9: dependencies: @@ -11896,21 +11964,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.24.0(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) - eslint: 9.23.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) + eslint: 9.24.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.23.0(jiti@1.21.7)): + eslint-plugin-header@3.1.1(eslint@9.24.0(jiti@1.21.7)): dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.23.0(jiti@1.21.7)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.24.0(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11919,9 +11987,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0(jiti@1.21.7)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.24.0(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11933,7 +12001,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/parser': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -11953,15 +12021,15 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.23.0(jiti@1.21.7): + eslint@9.24.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.24.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 + '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.1 '@eslint/core': 0.12.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.23.0 + '@eslint/js': 9.24.0 '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -12139,7 +12207,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.0(supports-color@10.0.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -12614,12 +12682,12 @@ snapshots: html-escaper@2.0.2: {} - htmlparser2@9.1.0: + htmlparser2@10.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 4.5.0 + entities: 6.0.0 http-assert@1.5.0: dependencies: @@ -13362,13 +13430,13 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.2 - less-loader@12.2.0(less@4.2.2)(webpack@5.99.1(esbuild@0.25.2)): + less-loader@12.2.0(less@4.3.0)(webpack@5.99.1(esbuild@0.25.2)): dependencies: - less: 4.2.2 + less: 4.3.0 optionalDependencies: webpack: 5.99.1(esbuild@0.25.2) - less@4.2.2: + less@4.3.0: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 @@ -13768,7 +13836,7 @@ snapshots: find-cache-dir: 3.3.2 injection-js: 2.4.0 jsonc-parser: 3.3.1 - less: 4.2.2 + less: 4.3.0 ora: 5.4.1 piscina: 4.9.2 postcss: 8.5.3 @@ -15775,7 +15843,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.2.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1): + vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 @@ -15784,7 +15852,7 @@ snapshots: '@types/node': 20.17.30 fsevents: 2.3.3 jiti: 1.21.7 - less: 4.2.2 + less: 4.3.0 sass: 1.86.3 terser: 5.39.0 yaml: 2.7.1 From 070d60fb383bb14d39f969942641253e54980fcf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 4 Apr 2025 12:49:42 -0400 Subject: [PATCH 137/160] fix(@schematics/angular): generate modules with a dash type separator To align with the updated style guide, Angular v20 will generate modules with file extension `module` type prefixed with a `-` separator instead of a `.` by default. Projects will automatically use this naming convention. Projects can however opt-out by setting the `typeSeparator` option to `.` for the module schematic. This can be done as a default in the `angular.json` or directly on the commandline via `--type-separator=.` when executing `ng generate`. As an example, `example.module.ts` will now be named `example-module.ts`. The TypeScript declaration will continue to contain `Module` such as with `ExampleModule`. --- .../angular/app-shell/index_spec.ts | 4 +- ...ule.ts.template => app-module.ts.template} | 2 +- .../files/module-files/src/main.ts.template | 2 +- .../angular/application/index_spec.ts | 30 +++--- .../schematics/angular/component/index.ts | 10 +- .../angular/component/index_spec.ts | 22 ++--- .../schematics/angular/directive/index.ts | 11 ++- .../angular/directive/index_spec.ts | 14 +-- .../files/src/__entryFile__.ts.template | 2 +- .../schematics/angular/library/index_spec.ts | 6 +- ...outing__typeSeparator__module.ts.template} | 0 ...rize____typeSeparator__module.ts.template} | 2 +- packages/schematics/angular/module/index.ts | 25 +++-- .../schematics/angular/module/index_spec.ts | 94 +++++++++---------- .../schematics/angular/module/schema.json | 6 ++ .../schematics/angular/ng-new/index_spec.ts | 6 +- packages/schematics/angular/pipe/index.ts | 10 +- .../schematics/angular/pipe/index_spec.ts | 24 ++--- .../schematics/angular/server/index_spec.ts | 2 +- .../angular/service-worker/index_spec.ts | 4 +- .../angular/utility/standalone/rules_spec.ts | 6 +- .../angular/utility/test/create-app-module.ts | 2 +- .../prerender/discover-routes-ngmodule.ts | 8 +- .../express-engine-ngmodule.ts | 2 +- .../e2e/tests/generate/module/module-basic.ts | 6 +- .../tests/generate/module/module-import.ts | 30 +++--- .../module/module-routing-child-folder.ts | 4 +- 27 files changed, 187 insertions(+), 147 deletions(-) rename packages/schematics/angular/application/files/module-files/src/app/{app.module.ts.template => app-module.ts.template} (88%) rename packages/schematics/angular/module/files/__name@dasherize@if-flat__/{__name@dasherize__-routing.module.ts.template => __name@dasherize__-routing__typeSeparator__module.ts.template} (100%) rename packages/schematics/angular/module/files/__name@dasherize@if-flat__/{__name@dasherize__.module.ts.template => __name@dasherize____typeSeparator__module.ts.template} (93%) diff --git a/packages/schematics/angular/app-shell/index_spec.ts b/packages/schematics/angular/app-shell/index_spec.ts index 9a33353a71e5..891048d0677e 100644 --- a/packages/schematics/angular/app-shell/index_spec.ts +++ b/packages/schematics/angular/app-shell/index_spec.ts @@ -69,12 +69,12 @@ describe('App Shell Schematic', () => { }); it('should not fail when AppModule have imported RouterModule already', async () => { - const updateRecorder = appTree.beginUpdate('/projects/bar/src/app/app.module.ts'); + const updateRecorder = appTree.beginUpdate('/projects/bar/src/app/app-module.ts'); updateRecorder.insertLeft(0, "import { RouterModule } from '@angular/router';"); appTree.commitUpdate(updateRecorder); const tree = await schematicRunner.runSchematic('app-shell', defaultOptions, appTree); - const filePath = '/projects/bar/src/app/app.module.ts'; + const filePath = '/projects/bar/src/app/app-module.ts'; const content = tree.readContent(filePath); expect(content).toMatch(/import { RouterModule } from '@angular\/router';/); }); diff --git a/packages/schematics/angular/application/files/module-files/src/app/app.module.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app-module.ts.template similarity index 88% rename from packages/schematics/angular/application/files/module-files/src/app/app.module.ts.template rename to packages/schematics/angular/application/files/module-files/src/app/app-module.ts.template index 336e06590fbf..e210bd4f6d68 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app.module.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app-module.ts.template @@ -1,7 +1,7 @@ import { NgModule<% if(experimentalZoneless) { %>, provideExperimentalZonelessChangeDetection<% } %> } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; <% if (routing) { %> -import { AppRoutingModule } from './app-routing.module';<% } %> +import { AppRoutingModule } from './app-routing-module';<% } %> import { App } from './app'; @NgModule({ diff --git a/packages/schematics/angular/application/files/module-files/src/main.ts.template b/packages/schematics/angular/application/files/module-files/src/main.ts.template index e851fbfb07fc..97d2d132989c 100644 --- a/packages/schematics/angular/application/files/module-files/src/main.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/main.ts.template @@ -1,6 +1,6 @@ <% if(!!viewEncapsulation) { %>import { ViewEncapsulation } from '@angular/core'; <% }%>import { platformBrowser } from '@angular/platform-browser'; -import { AppModule } from './app/app.module'; +import { AppModule } from './app/app-module'; platformBrowser().bootstrapModule(AppModule, { <% if(!experimentalZoneless) { %>ngZoneEventCoalescing: true,<% } %><% if(!!viewEncapsulation) { %> diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 036ef03f0ce7..a2d32547975e 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -54,7 +54,7 @@ describe('Application Schematic', () => { '/projects/foo/src/index.html', '/projects/foo/src/main.ts', '/projects/foo/src/styles.css', - '/projects/foo/src/app/app.module.ts', + '/projects/foo/src/app/app-module.ts', '/projects/foo/src/app/app.css', '/projects/foo/src/app/app.ng.html', '/projects/foo/src/app/app.spec.ts', @@ -542,7 +542,7 @@ describe('Application Schematic', () => { const options = { ...defaultOptions, standalone: true }; const tree = await schematicRunner.runSchematic('application', options, workspaceTree); - const moduleFiles = tree.files.filter((file) => file.endsWith('.module.ts')); + const moduleFiles = tree.files.filter((file) => file.endsWith('-module.ts')); expect(moduleFiles.length).toEqual(0); }); @@ -625,11 +625,11 @@ describe('Application Schematic', () => { const tree = await schematicRunner.runSchematic('application', options, workspaceTree); const files = tree.files; - expect(files).toContain('/projects/foo/src/app/app.module.ts'); - expect(files).toContain('/projects/foo/src/app/app-routing.module.ts'); - const moduleContent = tree.readContent('/projects/foo/src/app/app.module.ts'); - expect(moduleContent).toMatch(/import { AppRoutingModule } from '.\/app-routing.module'/); - const routingModuleContent = tree.readContent('/projects/foo/src/app/app-routing.module.ts'); + expect(files).toContain('/projects/foo/src/app/app-module.ts'); + expect(files).toContain('/projects/foo/src/app/app-routing-module.ts'); + const moduleContent = tree.readContent('/projects/foo/src/app/app-module.ts'); + expect(moduleContent).toMatch(/import { AppRoutingModule } from '.\/app-routing-module'/); + const routingModuleContent = tree.readContent('/projects/foo/src/app/app-routing-module.ts'); expect(routingModuleContent).toMatch(/RouterModule.forRoot\(routes\)/); }); @@ -640,7 +640,7 @@ describe('Application Schematic', () => { workspaceTree, ); - const path = '/projects/foo/src/app/app.module.ts'; + const path = '/projects/foo/src/app/app-module.ts'; const content = tree.readContent(path); expect(content).toMatch(/import { BrowserModule } from '@angular\/platform-browser';/); }); @@ -652,7 +652,7 @@ describe('Application Schematic', () => { workspaceTree, ); - const path = '/projects/foo/src/app/app.module.ts'; + const path = '/projects/foo/src/app/app-module.ts'; const content = tree.readContent(path); expect(content).toMatch(/import { App } from '\.\/app';/); }); @@ -669,8 +669,8 @@ describe('Application Schematic', () => { '/projects/foo/tsconfig.spec.json', '/projects/foo/src/main.ts', '/projects/foo/src/styles.css', - '/projects/foo/src/app/app-routing.module.ts', - '/projects/foo/src/app/app.module.ts', + '/projects/foo/src/app/app-routing-module.ts', + '/projects/foo/src/app/app-module.ts', '/projects/foo/src/app/app.css', '/projects/foo/src/app/app.ng.html', '/projects/foo/src/app/app.spec.ts', @@ -696,7 +696,7 @@ describe('Application Schematic', () => { ); }); - it('should add provideExperimentalZonelessChangeDetection() in app.module.ts when experimentalZoneless is true', async () => { + it('should add provideExperimentalZonelessChangeDetection() in app-module.ts when experimentalZoneless is true', async () => { const tree = await schematicRunner.runSchematic( 'application', { @@ -706,12 +706,12 @@ describe('Application Schematic', () => { }, workspaceTree, ); - const path = '/projects/foo/src/app/app.module.ts'; + const path = '/projects/foo/src/app/app-module.ts'; const fileContent = tree.readContent(path); expect(fileContent).toContain('provideExperimentalZonelessChangeDetection()'); }); - it('should not add provideExperimentalZonelessChangeDetection() in app.module.ts when experimentalZoneless is false', async () => { + it('should not add provideExperimentalZonelessChangeDetection() in app-module.ts when experimentalZoneless is false', async () => { const tree = await schematicRunner.runSchematic( 'application', { @@ -721,7 +721,7 @@ describe('Application Schematic', () => { }, workspaceTree, ); - const path = '/projects/foo/src/app/app.module.ts'; + const path = '/projects/foo/src/app/app-module.ts'; const fileContent = tree.readContent(path); expect(fileContent).not.toContain('provideExperimentalZonelessChangeDetection()'); }); diff --git a/packages/schematics/angular/component/index.ts b/packages/schematics/angular/component/index.ts index a59b3d3763fa..acbb82fadca6 100644 --- a/packages/schematics/angular/component/index.ts +++ b/packages/schematics/angular/component/index.ts @@ -53,7 +53,15 @@ export default function (options: ComponentOptions): Rule { options.path = buildDefaultPath(project); } - options.module = findModuleFromOptions(host, options); + try { + options.module = findModuleFromOptions(host, options); + } catch { + options.module = findModuleFromOptions(host, { + ...options, + moduleExt: '-module.ts', + routingModuleExt: '-routing-module.ts', + }); + } // Schematic templates require a defined type value options.type ??= ''; diff --git a/packages/schematics/angular/component/index_spec.ts b/packages/schematics/angular/component/index_spec.ts index a1b31c294fbb..51180aae3615 100644 --- a/packages/schematics/angular/component/index_spec.ts +++ b/packages/schematics/angular/component/index_spec.ts @@ -374,7 +374,7 @@ describe('Component Schematic', () => { it('should create a standalone component', async () => { const options = { ...defaultOptions, standalone: true }; const tree = await schematicRunner.runSchematic('component', options, appTree); - const moduleContent = tree.readContent('/projects/bar/src/app/app.module.ts'); + const moduleContent = tree.readContent('/projects/bar/src/app/app-module.ts'); const componentContent = tree.readContent('/projects/bar/src/app/foo/foo.component.ts'); expect(componentContent).toContain('class FooComponent'); expect(moduleContent).not.toContain('FooComponent'); @@ -416,13 +416,13 @@ describe('Component Schematic', () => { '/projects/baz/src/app/foo/foo.component.ts', ]), ); - const moduleContent = tree.readContent('/projects/baz/src/app/app.module.ts'); + const moduleContent = tree.readContent('/projects/baz/src/app/app-module.ts'); expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo\/foo.component'/); expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooComponent\r?\n/m); }); it('should use the module flag even if the module is a routing module', async () => { - const routingFileName = 'app-routing.module.ts'; + const routingFileName = 'app-routing-module.ts'; const routingModulePath = `/projects/baz/src/app/${routingFileName}`; const newTree = createAppModule(appTree, routingModulePath); const options = { ...defaultNonStandaloneOptions, module: routingFileName }; @@ -435,7 +435,7 @@ describe('Component Schematic', () => { const options = { ...defaultNonStandaloneOptions, name: 'dir/test-component' }; const tree = await schematicRunner.runSchematic('component', options, appTree); - const content = tree.readContent('/projects/baz/src/app/app.module.ts'); + const content = tree.readContent('/projects/baz/src/app/app-module.ts'); expect(content).toMatch( /import { TestComponentComponent } from '\.\/dir\/test-component\/test-component.component'/, ); @@ -455,7 +455,7 @@ describe('Component Schematic', () => { }; appTree = await schematicRunner.runSchematic('component', options, appTree); - const content = appTree.readContent('/projects/baz/src/app/admin/module/module.module.ts'); + const content = appTree.readContent('/projects/baz/src/app/admin/module/module-module.ts'); expect(content).toMatch( /import { TestComponentComponent } from '..\/..\/other\/test-component\/test-component.component'/, ); @@ -463,7 +463,7 @@ describe('Component Schematic', () => { it('should find the closest module', async () => { const options = { ...defaultNonStandaloneOptions }; - const fooModule = '/projects/baz/src/app/foo/foo.module.ts'; + const fooModule = '/projects/baz/src/app/foo/foo-module.ts'; appTree.create( fooModule, ` @@ -486,15 +486,15 @@ describe('Component Schematic', () => { const options = { ...defaultNonStandaloneOptions, export: true }; const tree = await schematicRunner.runSchematic('component', options, appTree); - const appModuleContent = tree.readContent('/projects/baz/src/app/app.module.ts'); + const appModuleContent = tree.readContent('/projects/baz/src/app/app-module.ts'); expect(appModuleContent).toMatch(/exports: \[\n(\s*) {2}FooComponent\n\1\]/); }); it('should import into a specified module', async () => { - const options = { ...defaultNonStandaloneOptions, module: 'app.module.ts' }; + const options = { ...defaultNonStandaloneOptions, module: 'app-module.ts' }; const tree = await schematicRunner.runSchematic('component', options, appTree); - const appModule = tree.readContent('/projects/baz/src/app/app.module.ts'); + const appModule = tree.readContent('/projects/baz/src/app/app-module.ts'); expect(appModule).toMatch(/import { FooComponent } from '.\/foo\/foo.component'/); }); @@ -511,8 +511,8 @@ describe('Component Schematic', () => { // move the module appTree.rename( - '/projects/baz/src/app/app.module.ts', - '/projects/baz/custom/app/app.module.ts', + '/projects/baz/src/app/app-module.ts', + '/projects/baz/custom/app/app-module.ts', ); appTree = await schematicRunner.runSchematic( 'component', diff --git a/packages/schematics/angular/directive/index.ts b/packages/schematics/angular/directive/index.ts index 089ff94acf92..e05c64ca9e5b 100644 --- a/packages/schematics/angular/directive/index.ts +++ b/packages/schematics/angular/directive/index.ts @@ -38,8 +38,15 @@ export default function (options: DirectiveOptions): Rule { options.path = buildDefaultPath(project); } - options.module = findModuleFromOptions(host, options); - + try { + options.module = findModuleFromOptions(host, options); + } catch { + options.module = findModuleFromOptions(host, { + ...options, + moduleExt: '-module.ts', + routingModuleExt: '-routing-module.ts', + }); + } const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; diff --git a/packages/schematics/angular/directive/index_spec.ts b/packages/schematics/angular/directive/index_spec.ts index affb582fbb67..e5dd8dd058df 100644 --- a/packages/schematics/angular/directive/index_spec.ts +++ b/packages/schematics/angular/directive/index_spec.ts @@ -159,7 +159,7 @@ describe('Directive Schematic', () => { const files = tree.files; expect(files).toContain('/projects/baz/src/app/foo.spec.ts'); expect(files).toContain('/projects/baz/src/app/foo.ts'); - const moduleContent = tree.readContent('/projects/baz/src/app/app.module.ts'); + const moduleContent = tree.readContent('/projects/baz/src/app/app-module.ts'); expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo'/); expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+Foo\r?\n/m); }); @@ -176,8 +176,8 @@ describe('Directive Schematic', () => { // move the module appTree.rename( - '/projects/baz/src/app/app.module.ts', - '/projects/baz/custom/app/app.module.ts', + '/projects/baz/src/app/app-module.ts', + '/projects/baz/custom/app/app-module.ts', ); appTree = await schematicRunner.runSchematic( 'directive', @@ -190,7 +190,7 @@ describe('Directive Schematic', () => { it('should find the closest module', async () => { const options = { ...defaultNonStandaloneOptions, flat: false }; - const fooModule = '/projects/baz/src/app/foo/foo.module.ts'; + const fooModule = '/projects/baz/src/app/foo/foo-module.ts'; appTree.create( fooModule, ` @@ -213,15 +213,15 @@ describe('Directive Schematic', () => { const options = { ...defaultNonStandaloneOptions, export: true }; const tree = await schematicRunner.runSchematic('directive', options, appTree); - const appModuleContent = tree.readContent('/projects/baz/src/app/app.module.ts'); + const appModuleContent = tree.readContent('/projects/baz/src/app/app-module.ts'); expect(appModuleContent).toMatch(/exports: \[\n(\s*) {2}Foo\n\1\]/); }); it('should import into a specified module', async () => { - const options = { ...defaultNonStandaloneOptions, module: 'app.module.ts' }; + const options = { ...defaultNonStandaloneOptions, module: 'app-module.ts' }; const tree = await schematicRunner.runSchematic('directive', options, appTree); - const appModule = tree.readContent('/projects/baz/src/app/app.module.ts'); + const appModule = tree.readContent('/projects/baz/src/app/app-module.ts'); expect(appModule).toMatch(/import { Foo } from '.\/foo'/); }); diff --git a/packages/schematics/angular/library/files/src/__entryFile__.ts.template b/packages/schematics/angular/library/files/src/__entryFile__.ts.template index 1db55ca95e33..2d13ba01016f 100644 --- a/packages/schematics/angular/library/files/src/__entryFile__.ts.template +++ b/packages/schematics/angular/library/files/src/__entryFile__.ts.template @@ -3,4 +3,4 @@ */ export * from './lib/<%= dasherize(name) %>';<% if (!standalone) { %> -export * from './lib/<%= dasherize(name) %>.module';<% } %> +export * from './lib/<%= dasherize(name) %>-module';<% } %> diff --git a/packages/schematics/angular/library/index_spec.ts b/packages/schematics/angular/library/index_spec.ts index 62b9d0b87f47..caedfb2b1739 100644 --- a/packages/schematics/angular/library/index_spec.ts +++ b/packages/schematics/angular/library/index_spec.ts @@ -63,7 +63,7 @@ describe('Library Schematic', () => { it('should not add reference to module file in entry-file', async () => { const tree = await schematicRunner.runSchematic('library', defaultOptions, workspaceTree); - expect(tree.readContent('/projects/foo/src/my-index.ts')).not.toContain('foo.module'); + expect(tree.readContent('/projects/foo/src/my-index.ts')).not.toContain('foo-module'); }); it('should create a standalone component', async () => { @@ -400,7 +400,7 @@ describe('Library Schematic', () => { workspaceTree, ); - const fileContent = getFileContent(tree, '/projects/foo/src/lib/foo.module.ts'); + const fileContent = getFileContent(tree, '/projects/foo/src/lib/foo-module.ts'); expect(fileContent).toMatch(/exports: \[\n(\s*) {2}Foo\n\1\]/); }); @@ -420,7 +420,7 @@ describe('Library Schematic', () => { '/projects/foo/tsconfig.lib.json', '/projects/foo/tsconfig.lib.prod.json', '/projects/foo/src/my-index.ts', - '/projects/foo/src/lib/foo.module.ts', + '/projects/foo/src/lib/foo-module.ts', '/projects/foo/src/lib/foo.spec.ts', '/projects/foo/src/lib/foo.ts', ]), diff --git a/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__-routing.module.ts.template b/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__-routing__typeSeparator__module.ts.template similarity index 100% rename from packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__-routing.module.ts.template rename to packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__-routing__typeSeparator__module.ts.template diff --git a/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template b/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize____typeSeparator__module.ts.template similarity index 93% rename from packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template rename to packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize____typeSeparator__module.ts.template index a8ab83f0139e..01ab7af167d1 100644 --- a/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template +++ b/packages/schematics/angular/module/files/__name@dasherize@if-flat__/__name@dasherize____typeSeparator__module.ts.template @@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';<% if (commonModule) { %> import { CommonModule } from '@angular/common';<% } %><% if (lazyRouteWithoutRouteModule) { %> import { Routes, RouterModule } from '@angular/router';<% } %> <% if ((!lazyRoute && routing) || lazyRouteWithRouteModule) { %> -import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing.module';<% } %> +import { <%= classify(name) %>RoutingModule } from './<%= dasherize(name) %>-routing<%= typeSeparator %>module';<% } %> <% if (lazyRouteWithoutRouteModule) { %> const routes: Routes = [ { path: '', component: <%= classify(name) %> } diff --git a/packages/schematics/angular/module/index.ts b/packages/schematics/angular/module/index.ts index 0bc257e6c21b..f7657783d866 100644 --- a/packages/schematics/angular/module/index.ts +++ b/packages/schematics/angular/module/index.ts @@ -40,7 +40,7 @@ function buildRelativeModulePath(options: ModuleOptions, modulePath: string): st const importModulePath = join( options.path ?? '', options.flat ? '' : strings.dasherize(options.name), - strings.dasherize(options.name) + '.module', + strings.dasherize(options.name) + options.typeSeparator + 'module', ); return buildRelativePath(modulePath, importModulePath); @@ -113,9 +113,12 @@ function addRouteDeclarationToNgModule( } function getRoutingModulePath(host: Tree, modulePath: string): string | undefined { - const routingModulePath = modulePath.endsWith(ROUTING_MODULE_EXT) - ? modulePath - : modulePath.replace(MODULE_EXT, ROUTING_MODULE_EXT); + const routingModulePath = + modulePath.endsWith(ROUTING_MODULE_EXT) || modulePath.endsWith('-routing-module.ts') + ? modulePath + : modulePath + .replace(MODULE_EXT, ROUTING_MODULE_EXT) + .replace('-module.ts', '-routing-module.ts'); return host.exists(routingModulePath) ? routingModulePath : undefined; } @@ -135,7 +138,15 @@ export default function (options: ModuleOptions): Rule { } if (options.module) { - options.module = findModuleFromOptions(host, options); + try { + options.module = findModuleFromOptions(host, options); + } catch { + options.module = findModuleFromOptions(host, { + ...options, + moduleExt: '-module.ts', + routingModuleExt: '-routing-module.ts', + }); + } } let routingModulePath; @@ -153,7 +164,7 @@ export default function (options: ModuleOptions): Rule { const templateSource = apply(url('./files'), [ options.routing || (isLazyLoadedModuleGen && routingModulePath) ? noop() - : filter((path) => !path.endsWith('-routing.module.ts.template')), + : filter((path) => !path.includes('-routing')), applyTemplates({ ...strings, 'if-flat': (s: string) => (options.flat ? '' : s), @@ -167,7 +178,7 @@ export default function (options: ModuleOptions): Rule { const moduleDasherized = strings.dasherize(options.name); const modulePath = `${ !options.flat ? moduleDasherized + '/' : '' - }${moduleDasherized}.module.ts`; + }${moduleDasherized}${options.typeSeparator}module.ts`; const componentOptions: ComponentOptions = { module: modulePath, diff --git a/packages/schematics/angular/module/index_spec.ts b/packages/schematics/angular/module/index_spec.ts index 6bb319654c78..b819f279d8cd 100644 --- a/packages/schematics/angular/module/index_spec.ts +++ b/packages/schematics/angular/module/index_spec.ts @@ -49,33 +49,33 @@ describe('Module Schematic', () => { const tree = await schematicRunner.runSchematic('module', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.module.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-module.ts'); }); it('should import into another module', async () => { - const options = { ...defaultOptions, module: 'app.module.ts' }; + const options = { ...defaultOptions, module: 'app-module.ts' }; const tree = await schematicRunner.runSchematic('module', options, appTree); - const content = tree.readContent('/projects/bar/src/app/app.module.ts'); - expect(content).toMatch(/import { FooModule } from '.\/foo\/foo.module'/); + const content = tree.readContent('/projects/bar/src/app/app-module.ts'); + expect(content).toMatch(/import { FooModule } from '.\/foo\/foo-module'/); expect(content).toMatch(/imports: \[[^\]]*FooModule[^\]]*\]/m); }); it('should import into another module when using flat', async () => { - const options = { ...defaultOptions, flat: true, module: 'app.module.ts' }; + const options = { ...defaultOptions, flat: true, module: 'app-module.ts' }; const tree = await schematicRunner.runSchematic('module', options, appTree); - const content = tree.readContent('/projects/bar/src/app/app.module.ts'); - expect(content).toMatch(/import { FooModule } from '.\/foo.module'/); + const content = tree.readContent('/projects/bar/src/app/app-module.ts'); + expect(content).toMatch(/import { FooModule } from '.\/foo-module'/); expect(content).toMatch(/imports: \[[^\]]*FooModule[^\]]*\]/m); }); it('should import into another module when using flat', async () => { - const options = { ...defaultOptions, flat: true, module: 'app.module.ts' }; + const options = { ...defaultOptions, flat: true, module: 'app-module.ts' }; const tree = await schematicRunner.runSchematic('module', options, appTree); - const content = tree.readContent('/projects/bar/src/app/app.module.ts'); - expect(content).toMatch(/import { FooModule } from '.\/foo.module'/); + const content = tree.readContent('/projects/bar/src/app/app-module.ts'); + expect(content).toMatch(/import { FooModule } from '.\/foo-module'/); expect(content).toMatch(/imports: \[[^\]]*FooModule[^\]]*\]/m); }); @@ -102,8 +102,8 @@ describe('Module Schematic', () => { tree, ); - const content = tree.readContent('/projects/bar/src/app/sub1/test1/test1.module.ts'); - expect(content).toMatch(/import { Test2Module } from '..\/..\/sub2\/test2\/test2.module'/); + const content = tree.readContent('/projects/bar/src/app/sub1/test1/test1-module.ts'); + expect(content).toMatch(/import { Test2Module } from '..\/..\/sub2\/test2\/test2-module'/); }); it('should create a routing module', async () => { @@ -111,12 +111,12 @@ describe('Module Schematic', () => { const tree = await schematicRunner.runSchematic('module', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.module.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo-routing.module.ts'); - const moduleContent = tree.readContent('/projects/bar/src/app/foo/foo.module.ts'); - expect(moduleContent).toMatch(/import { FooRoutingModule } from '.\/foo-routing.module'/); + expect(files).toContain('/projects/bar/src/app/foo/foo-module.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-routing-module.ts'); + const moduleContent = tree.readContent('/projects/bar/src/app/foo/foo-module.ts'); + expect(moduleContent).toMatch(/import { FooRoutingModule } from '.\/foo-routing-module'/); const routingModuleContent = tree.readContent( - '/projects/bar/src/app/foo/foo-routing.module.ts', + '/projects/bar/src/app/foo/foo-routing-module.ts', ); expect(routingModuleContent).toMatch(/RouterModule.forChild\(routes\)/); }); @@ -126,7 +126,7 @@ describe('Module Schematic', () => { const tree = await schematicRunner.runSchematic('module', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/two-word/two-word.module.ts'); + expect(files).toContain('/projects/bar/src/app/two-word/two-word-module.ts'); }); it('should respect the sourceRoot value', async () => { @@ -134,7 +134,7 @@ describe('Module Schematic', () => { config.projects.bar.sourceRoot = 'projects/bar/custom'; appTree.overwrite('/angular.json', JSON.stringify(config, null, 2)); appTree = await schematicRunner.runSchematic('module', defaultOptions, appTree); - expect(appTree.files).toContain('/projects/bar/custom/app/foo/foo.module.ts'); + expect(appTree.files).toContain('/projects/bar/custom/app/foo/foo-module.ts'); }); describe('lazy route generator', () => { @@ -150,8 +150,8 @@ describe('Module Schematic', () => { expect(files).toEqual( jasmine.arrayContaining([ - '/projects/bar/src/app/foo/foo.module.ts', - '/projects/bar/src/app/foo/foo-routing.module.ts', + '/projects/bar/src/app/foo/foo-module.ts', + '/projects/bar/src/app/foo/foo-routing-module.ts', '/projects/bar/src/app/foo/foo.ts', '/projects/bar/src/app/foo/foo.ng.html', '/projects/bar/src/app/foo/foo.css', @@ -159,14 +159,14 @@ describe('Module Schematic', () => { ); const appRoutingModuleContent = tree.readContent( - '/projects/bar/src/app/app-routing.module.ts', + '/projects/bar/src/app/app-routing-module.ts', ); expect(appRoutingModuleContent).toMatch( - /path: '\/new-route', loadChildren: \(\) => import\('.\/foo\/foo.module'\).then\(m => m.FooModule\)/, + /path: '\/new-route', loadChildren: \(\) => import\('.\/foo\/foo-module'\).then\(m => m.FooModule\)/, ); const fooRoutingModuleContent = tree.readContent( - '/projects/bar/src/app/foo/foo-routing.module.ts', + '/projects/bar/src/app/foo/foo-routing-module.ts', ); expect(fooRoutingModuleContent).toMatch(/RouterModule.forChild\(routes\)/); expect(fooRoutingModuleContent).toMatch( @@ -176,7 +176,7 @@ describe('Module Schematic', () => { it('should generate a lazy loaded module with embedded route declarations', async () => { appTree.overwrite( - '/projects/bar/src/app/app.module.ts', + '/projects/bar/src/app/app-module.ts', ` import { NgModule } from '@angular/core'; import { AppComponent } from './app'; @@ -195,23 +195,23 @@ describe('Module Schematic', () => { export class AppModule { } `, ); - appTree.delete('/projects/bar/src/app/app-routing.module.ts'); + appTree.delete('/projects/bar/src/app/app-routing-module.ts'); const tree = await schematicRunner.runSchematic('module', options, appTree); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo/foo.module.ts'); - expect(files).not.toContain('/projects/bar/src/app/foo/foo-routing.module.ts'); + expect(files).toContain('/projects/bar/src/app/foo/foo-module.ts'); + expect(files).not.toContain('/projects/bar/src/app/foo/foo-routing-module.ts'); expect(files).toContain('/projects/bar/src/app/foo/foo.ts'); expect(files).toContain('/projects/bar/src/app/foo/foo.ng.html'); expect(files).toContain('/projects/bar/src/app/foo/foo.css'); - const appModuleContent = tree.readContent('/projects/bar/src/app/app.module.ts'); + const appModuleContent = tree.readContent('/projects/bar/src/app/app-module.ts'); expect(appModuleContent).toMatch( - /path: '\/new-route', loadChildren: \(\) => import\('.\/foo\/foo.module'\).then\(m => m.FooModule\)/, + /path: '\/new-route', loadChildren: \(\) => import\('.\/foo\/foo-module'\).then\(m => m.FooModule\)/, ); - const fooModuleContent = tree.readContent('/projects/bar/src/app/foo/foo.module.ts'); + const fooModuleContent = tree.readContent('/projects/bar/src/app/foo/foo-module.ts'); expect(fooModuleContent).toMatch(/RouterModule.forChild\(routes\)/); expect(fooModuleContent).toMatch( /const routes: Routes = \[\r?\n?\s*{ path: '', component: Foo }\r?\n?\s*\];/, @@ -228,8 +228,8 @@ describe('Module Schematic', () => { expect(files).toEqual( jasmine.arrayContaining([ - '/projects/bar/src/app/foo.module.ts', - '/projects/bar/src/app/foo-routing.module.ts', + '/projects/bar/src/app/foo-module.ts', + '/projects/bar/src/app/foo-routing-module.ts', '/projects/bar/src/app/foo.ts', '/projects/bar/src/app/foo.ng.html', '/projects/bar/src/app/foo.css', @@ -237,10 +237,10 @@ describe('Module Schematic', () => { ); const appRoutingModuleContent = tree.readContent( - '/projects/bar/src/app/app-routing.module.ts', + '/projects/bar/src/app/app-routing-module.ts', ); expect(appRoutingModuleContent).toMatch( - /path: '\/new-route', loadChildren: \(\) => import\('.\/foo.module'\).then\(m => m.FooModule\)/, + /path: '\/new-route', loadChildren: \(\) => import\('.\/foo-module'\).then\(m => m.FooModule\)/, ); }); @@ -267,34 +267,34 @@ describe('Module Schematic', () => { ); expect(tree.files).toEqual( jasmine.arrayContaining([ - '/projects/bar/src/app/foo/foo-routing.module.ts', - '/projects/bar/src/app/foo/foo.module.ts', - '/projects/bar/src/app/bar/bar-routing.module.ts', - '/projects/bar/src/app/bar/bar.module.ts', + '/projects/bar/src/app/foo/foo-routing-module.ts', + '/projects/bar/src/app/foo/foo-module.ts', + '/projects/bar/src/app/bar/bar-routing-module.ts', + '/projects/bar/src/app/bar/bar-module.ts', '/projects/bar/src/app/bar/bar.ts', ]), ); const barRoutingModuleContent = tree.readContent( - '/projects/bar/src/app/bar/bar-routing.module.ts', + '/projects/bar/src/app/bar/bar-routing-module.ts', ); expect(barRoutingModuleContent).toContain(`path: '', component: Bar `); const fooRoutingModuleContent = tree.readContent( - '/projects/bar/src/app/foo/foo-routing.module.ts', + '/projects/bar/src/app/foo/foo-routing-module.ts', ); expect(fooRoutingModuleContent).toContain( - `loadChildren: () => import('../bar/bar.module').then(m => m.BarModule)`, + `loadChildren: () => import('../bar/bar-module').then(m => m.BarModule)`, ); }); it('should not add reference to RouterModule when referencing lazy routing module', async () => { // Delete routing module - appTree.delete('/projects/bar/src/app/app-routing.module.ts'); + appTree.delete('/projects/bar/src/app/app-routing-module.ts'); - // Update app.module to contain the route config. + // Update app-module to contain the route config. appTree.overwrite( - 'projects/bar/src/app/app.module.ts', + 'projects/bar/src/app/app-module.ts', ` import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; @@ -317,11 +317,11 @@ describe('Module Schematic', () => { name: 'bar', route: 'bar', routing: true, - module: 'app.module.ts', + module: 'app-module.ts', }, appTree, ); - const content = tree.readContent('/projects/bar/src/app/bar/bar.module.ts'); + const content = tree.readContent('/projects/bar/src/app/bar/bar-module.ts'); expect(content).toContain('RouterModule.forChild(routes)'); expect(content).not.toContain('BarRoutingModule'); }); diff --git a/packages/schematics/angular/module/schema.json b/packages/schematics/angular/module/schema.json index 2be42b4b2d5c..d433aa17c6d4 100644 --- a/packages/schematics/angular/module/schema.json +++ b/packages/schematics/angular/module/schema.json @@ -62,6 +62,12 @@ "type": "string", "description": "The declaring NgModule.", "alias": "m" + }, + "typeSeparator": { + "type": "string", + "default": "-", + "enum": ["-", "."], + "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.module.ts`." } }, "required": ["name", "project"] diff --git a/packages/schematics/angular/ng-new/index_spec.ts b/packages/schematics/angular/ng-new/index_spec.ts index 3f2464e0af8b..413cc6841934 100644 --- a/packages/schematics/angular/ng-new/index_spec.ts +++ b/packages/schematics/angular/ng-new/index_spec.ts @@ -41,7 +41,7 @@ describe('Ng New Schematic', () => { ]), ); - expect(files).not.toEqual(jasmine.arrayContaining(['/bar/src/app/app.module.ts'])); + expect(files).not.toEqual(jasmine.arrayContaining(['/bar/src/app/app-module.ts'])); }); it('should create module files of a standalone=false application', async () => { @@ -53,7 +53,7 @@ describe('Ng New Schematic', () => { jasmine.arrayContaining([ '/bar/tsconfig.app.json', '/bar/src/main.ts', - '/bar/src/app/app.module.ts', + '/bar/src/app/app-module.ts', ]), ); }); @@ -74,7 +74,7 @@ describe('Ng New Schematic', () => { }; const tree = await schematicRunner.runSchematic('ng-new', options); - const moduleContent = tree.readContent('/foo/src/app/app.module.ts'); + const moduleContent = tree.readContent('/foo/src/app/app-module.ts'); expect(moduleContent).toMatch(/declarations:\s*\[\s*App\s*\]/m); }); diff --git a/packages/schematics/angular/pipe/index.ts b/packages/schematics/angular/pipe/index.ts index 8ecf154c6501..150b0bc20c57 100644 --- a/packages/schematics/angular/pipe/index.ts +++ b/packages/schematics/angular/pipe/index.ts @@ -18,7 +18,15 @@ import { Schema as PipeOptions } from './schema'; export default function (options: PipeOptions): Rule { return async (host: Tree) => { options.path ??= await createDefaultPath(host, options.project); - options.module = findModuleFromOptions(host, options); + try { + options.module = findModuleFromOptions(host, options); + } catch { + options.module = findModuleFromOptions(host, { + ...options, + moduleExt: '-module.ts', + routingModuleExt: '-routing-module.ts', + }); + } const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; diff --git a/packages/schematics/angular/pipe/index_spec.ts b/packages/schematics/angular/pipe/index_spec.ts index ade503998a94..51f890e54ee1 100644 --- a/packages/schematics/angular/pipe/index_spec.ts +++ b/packages/schematics/angular/pipe/index_spec.ts @@ -58,7 +58,7 @@ describe('Pipe Schematic', () => { const files = tree.files; expect(files).toContain('/projects/bar/src/app/foo-pipe.spec.ts'); expect(files).toContain('/projects/bar/src/app/foo-pipe.ts'); - const moduleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); + const moduleContent = getFileContent(tree, '/projects/bar/src/app/app-module.ts'); expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo-pipe'/); expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooPipe\r?\n/m); const fileContent = tree.readContent('/projects/bar/src/app/foo-pipe.ts'); @@ -77,7 +77,7 @@ describe('Pipe Schematic', () => { const files = tree.files; expect(files).toContain('/projects/bar/src/app/foo.pipe.spec.ts'); expect(files).toContain('/projects/bar/src/app/foo.pipe.ts'); - const moduleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); + const moduleContent = getFileContent(tree, '/projects/bar/src/app/app-module.ts'); expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo.pipe'/); expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooPipe\r?\n/m); const fileContent = tree.readContent('/projects/bar/src/app/foo.pipe.ts'); @@ -96,7 +96,7 @@ describe('Pipe Schematic', () => { const files = tree.files; expect(files).toContain('/projects/bar/src/app/foo-pipe.spec.ts'); expect(files).toContain('/projects/bar/src/app/foo-pipe.ts'); - const moduleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); + const moduleContent = getFileContent(tree, '/projects/bar/src/app/app-module.ts'); expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo-pipe'/); expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooPipe\r?\n/m); const fileContent = tree.readContent('/projects/bar/src/app/foo-pipe.ts'); @@ -104,10 +104,10 @@ describe('Pipe Schematic', () => { }); it('should import into a specified module', async () => { - const options = { ...defaultNonStandaloneOptions, module: 'app.module.ts' }; + const options = { ...defaultNonStandaloneOptions, module: 'app-module.ts' }; const tree = await schematicRunner.runSchematic('pipe', options, appTree); - const appModule = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); + const appModule = getFileContent(tree, '/projects/bar/src/app/app-module.ts'); expect(appModule).toMatch(/import { FooPipe } from '.\/foo-pipe'/); }); @@ -131,7 +131,7 @@ describe('Pipe Schematic', () => { const options = { ...defaultNonStandaloneOptions, module: 'admin/module' }; appTree = await schematicRunner.runSchematic('pipe', options, appTree); - const content = appTree.readContent('/projects/bar/src/app/admin/module/module.module.ts'); + const content = appTree.readContent('/projects/bar/src/app/admin/module/module-module.ts'); expect(content).toMatch(/import { FooPipe } from '\.\.\/\.\.\/foo-pipe'/); }); @@ -139,7 +139,7 @@ describe('Pipe Schematic', () => { const options = { ...defaultNonStandaloneOptions, export: true }; const tree = await schematicRunner.runSchematic('pipe', options, appTree); - const appModuleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); + const appModuleContent = getFileContent(tree, '/projects/bar/src/app/app-module.ts'); expect(appModuleContent).toMatch(/exports: \[\n(\s*) {2}FooPipe\n\1\]/); }); @@ -150,13 +150,13 @@ describe('Pipe Schematic', () => { const files = tree.files; expect(files).toContain('/projects/bar/src/app/foo/foo-pipe.spec.ts'); expect(files).toContain('/projects/bar/src/app/foo/foo-pipe.ts'); - const moduleContent = getFileContent(tree, '/projects/bar/src/app/app.module.ts'); + const moduleContent = getFileContent(tree, '/projects/bar/src/app/app-module.ts'); expect(moduleContent).toMatch(/import.*Foo.*from '.\/foo\/foo-pipe'/); expect(moduleContent).toMatch(/declarations:\s*\[[^\]]+?,\r?\n\s+FooPipe\r?\n/m); }); it('should use the module flag even if the module is a routing module', async () => { - const routingFileName = 'app-routing.module.ts'; + const routingFileName = 'app-routing-module.ts'; const routingModulePath = `/projects/bar/src/app/${routingFileName}`; const newTree = createAppModule(appTree, routingModulePath); const options = { ...defaultNonStandaloneOptions, module: routingFileName }; @@ -177,8 +177,8 @@ describe('Pipe Schematic', () => { // move the module appTree.rename( - '/projects/bar/src/app/app.module.ts', - '/projects/bar/custom/app/app.module.ts', + '/projects/bar/src/app/app-module.ts', + '/projects/bar/custom/app/app-module.ts', ); appTree = await schematicRunner.runSchematic('pipe', defaultNonStandaloneOptions, appTree); expect(appTree.files).toContain('/projects/bar/custom/app/foo-pipe.ts'); @@ -192,7 +192,7 @@ describe('Pipe Schematic', () => { }); it('should create a standalone pipe', async () => { const tree = await schematicRunner.runSchematic('pipe', defaultOptions, appTree); - const moduleContent = tree.readContent('/projects/bar/src/app/app.module.ts'); + const moduleContent = tree.readContent('/projects/bar/src/app/app-module.ts'); const pipeContent = tree.readContent('/projects/bar/src/app/foo-pipe.ts'); expect(pipeContent).not.toContain('standalone'); expect(pipeContent).toContain('class FooPipe'); diff --git a/packages/schematics/angular/server/index_spec.ts b/packages/schematics/angular/server/index_spec.ts index a4bacc3f17bb..09dfbc73d2a1 100644 --- a/packages/schematics/angular/server/index_spec.ts +++ b/packages/schematics/angular/server/index_spec.ts @@ -172,7 +172,7 @@ describe('Server Schematic', () => { it(`should add 'provideClientHydration' to the providers list`, async () => { const tree = await schematicRunner.runSchematic('server', defaultOptions, appTree); - const contents = tree.readContent('/projects/bar/src/app/app.module.ts'); + const contents = tree.readContent('/projects/bar/src/app/app-module.ts'); expect(contents).toContain(`provideClientHydration(withEventReplay())`); }); }); diff --git a/packages/schematics/angular/service-worker/index_spec.ts b/packages/schematics/angular/service-worker/index_spec.ts index 87f3a9aafc46..e67a91f6d754 100644 --- a/packages/schematics/angular/service-worker/index_spec.ts +++ b/packages/schematics/angular/service-worker/index_spec.ts @@ -171,7 +171,7 @@ describe('Service Worker Schematic', () => { nonStandaloneSWOptions, appTree, ); - const pkgText = tree.readContent('/projects/buz/src/app/app.module.ts'); + const pkgText = tree.readContent('/projects/buz/src/app/app-module.ts'); expect(pkgText).toMatch(/import \{ ServiceWorkerModule \} from '@angular\/service-worker'/); }); @@ -181,7 +181,7 @@ describe('Service Worker Schematic', () => { nonStandaloneSWOptions, appTree, ); - const pkgText = tree.readContent('/projects/buz/src/app/app.module.ts'); + const pkgText = tree.readContent('/projects/buz/src/app/app-module.ts'); expect(pkgText).toMatch( new RegExp( "(\\s+)ServiceWorkerModule\\.register\\('ngsw-worker\\.js', \\{\\n" + diff --git a/packages/schematics/angular/utility/standalone/rules_spec.ts b/packages/schematics/angular/utility/standalone/rules_spec.ts index 0eed95662e2b..c6e3836344f0 100644 --- a/packages/schematics/angular/utility/standalone/rules_spec.ts +++ b/packages/schematics/angular/utility/standalone/rules_spec.ts @@ -74,7 +74,7 @@ describe('standalone utilities', () => { host, ); - const content = readFile('app/app.module.ts'); + const content = readFile('app/app-module.ts'); assertContains(content, `import { MyModule } from '@my/module';`); assertContains(content, `imports: [BrowserModule, MyModule.forRoot([])]`); @@ -326,7 +326,7 @@ describe('standalone utilities', () => { host, ); - const content = readFile('app/app.module.ts'); + const content = readFile('app/app-module.ts'); assertContains(content, `import { BrowserModule as BrowserModule_alias } from '@my/module';`); assertContains(content, `imports: [BrowserModule, BrowserModule_alias.forRoot([])]`); @@ -420,7 +420,7 @@ describe('standalone utilities', () => { host, ); - const content = readFile('app/app.module.ts'); + const content = readFile('app/app-module.ts'); assertContains(content, `import { SOME_TOKEN } from '@my/module';`); assertContains(content, `providers: [{ provide: SOME_TOKEN, useValue: 123 }]`); diff --git a/packages/schematics/angular/utility/test/create-app-module.ts b/packages/schematics/angular/utility/test/create-app-module.ts index 1c76111c3a78..563f3a60ea72 100644 --- a/packages/schematics/angular/utility/test/create-app-module.ts +++ b/packages/schematics/angular/utility/test/create-app-module.ts @@ -10,7 +10,7 @@ import { UnitTestTree } from '@angular-devkit/schematics/testing'; export function createAppModule(tree: UnitTestTree, path?: string): UnitTestTree { tree.create( - path || '/src/app/app.module.ts', + path || '/src/app/app-module.ts', ` import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; diff --git a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts index 46da2ed55d62..cc79e32f9185 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts @@ -46,7 +46,7 @@ export default async function () { // Add routes await writeFile( - `projects/${projectName}/src/app/app-routing.module.ts`, + `projects/${projectName}/src/app/app-routing-module.ts`, ` import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -91,9 +91,9 @@ export default async function () { // Generate lazy routes const lazyModules: [route: string, moduleName: string][] = [ - ['lazy-one', 'app.module'], - ['lazy-one-child', 'lazy-one/lazy-one.module'], - ['lazy-two', 'app.module'], + ['lazy-one', 'app-module'], + ['lazy-one-child', 'lazy-one/lazy-one-module'], + ['lazy-two', 'app-module'], ]; for (const [route, moduleName] of lazyModules) { diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts index a2b1c6a6cc34..2fa393de929f 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts @@ -70,7 +70,7 @@ export default async function () { 'projects/test-project-two/src/styles.css': `* { color: #000 }`, 'projects/test-project-two/src/main.ts': ` import { platformBrowser } from '@angular/platform-browser'; - import { AppModule } from './app/app.module'; + import { AppModule } from './app/app-module'; (window as any)['doBootstrap'] = () => { platformBrowser() diff --git a/tests/legacy-cli/e2e/tests/generate/module/module-basic.ts b/tests/legacy-cli/e2e/tests/generate/module/module-basic.ts index 8b59c3147532..18e1a05fedde 100644 --- a/tests/legacy-cli/e2e/tests/generate/module/module-basic.ts +++ b/tests/legacy-cli/e2e/tests/generate/module/module-basic.ts @@ -13,10 +13,10 @@ export default async function () { await ng('generate', 'module', 'test', '--project', projectName); await expectFileToExist(moduleDir); - await expectFileToExist(join(moduleDir, 'test.module.ts')); - await expectToFail(() => expectFileToExist(join(moduleDir, 'test-routing.module.ts'))); + await expectFileToExist(join(moduleDir, 'test-module.ts')); + await expectToFail(() => expectFileToExist(join(moduleDir, 'test-routing-module.ts'))); await expectToFail(() => expectFileToExist(join(moduleDir, 'test.spec.ts'))); - await expectFileToMatch(join(moduleDir, 'test.module.ts'), 'TestModule'); + await expectFileToMatch(join(moduleDir, 'test-module.ts'), 'TestModule'); // Try to run the unit tests. await ng('test', projectName, '--watch=false'); diff --git a/tests/legacy-cli/e2e/tests/generate/module/module-import.ts b/tests/legacy-cli/e2e/tests/generate/module/module-import.ts index 07f280b918f5..533b3d19efe7 100644 --- a/tests/legacy-cli/e2e/tests/generate/module/module-import.ts +++ b/tests/legacy-cli/e2e/tests/generate/module/module-import.ts @@ -9,35 +9,35 @@ export default async function () { await ng('generate', 'module', 'sub/deep', '--project', projectName); const projectAppDir = `projects/${projectName}/src/app`; - const modulePath = join(projectAppDir, 'app.module.ts'); - const subModulePath = join(projectAppDir, 'sub/sub.module.ts'); - const deepSubModulePath = join(projectAppDir, 'sub/deep/deep.module.ts'); + const modulePath = join(projectAppDir, 'app-module.ts'); + const subModulePath = join(projectAppDir, 'sub/sub-module.ts'); + const deepSubModulePath = join(projectAppDir, 'sub/deep/deep-module.ts'); - await ng('generate', 'module', 'test1', '--module', 'app.module.ts', '--project', projectName); - await expectFileToMatch(modulePath, `import { Test1Module } from './test1/test1.module'`); + await ng('generate', 'module', 'test1', '--module', 'app-module.ts', '--project', projectName); + await expectFileToMatch(modulePath, `import { Test1Module } from './test1/test1-module'`); await expectFileToMatch(modulePath, /imports: \[.*?Test1Module.*?\]/s); - await ng('generate', 'module', 'test2', '--module', 'app.module', '--project', projectName); - await expectFileToMatch(modulePath, `import { Test2Module } from './test2/test2.module'`); + await ng('generate', 'module', 'test2', '--module', 'app-module', '--project', projectName); + await expectFileToMatch(modulePath, `import { Test2Module } from './test2/test2-module'`); await expectFileToMatch(modulePath, /imports: \[.*?Test2Module.*?\]/s); await ng('generate', 'module', 'test3', '--module', 'app', '--project', projectName); - await expectFileToMatch(modulePath, `import { Test3Module } from './test3/test3.module'`); + await expectFileToMatch(modulePath, `import { Test3Module } from './test3/test3-module'`); await expectFileToMatch(modulePath, /imports: \[.*?Test3Module.*?\]/s); await ng('generate', 'module', 'test4', '--routing', '--module', 'app', '--project', projectName); await expectFileToMatch(modulePath, /imports: \[.*?Test4Module.*?\]/s); await expectFileToMatch( - join(projectAppDir, 'test4/test4.module.ts'), - `import { Test4RoutingModule } from './test4-routing.module'`, + join(projectAppDir, 'test4/test4-module.ts'), + `import { Test4RoutingModule } from './test4-routing-module'`, ); await expectFileToMatch( - join(projectAppDir, 'test4/test4.module.ts'), + join(projectAppDir, 'test4/test4-module.ts'), /imports: \[.*?Test4RoutingModule.*?\]/s, ); await ng('generate', 'module', 'test5', '--module', 'sub', '--project', projectName); - await expectFileToMatch(subModulePath, `import { Test5Module } from '../test5/test5.module'`); + await expectFileToMatch(subModulePath, `import { Test5Module } from '../test5/test5-module'`); await expectFileToMatch(subModulePath, /imports: \[.*?Test5Module.*?\]/s); @@ -45,15 +45,15 @@ export default async function () { await expectFileToMatch( deepSubModulePath, - `import { Test6Module } from '../../test6/test6.module'`, + `import { Test6Module } from '../../test6/test6-module'`, ); await expectFileToMatch(deepSubModulePath, /imports: \[.*?Test6Module.*?\]/s); // E2E_DISABLE: temporarily disable pending investigation // await process.chdir(join(root, 'src', 'app'))) - // await ng('generate', 'module', 'test7', '--module', 'app.module.ts')) + // await ng('generate', 'module', 'test7', '--module', 'app-module.ts')) // await process.chdir('..')) // await expectFileToMatch(modulePath, - // /import { Test7Module } from '.\/test7\/test7.module'/)) + // /import { Test7Module } from '.\/test7\/test7-module'/)) // await expectFileToMatch(modulePath, /imports: \[(.|\s)*Test7Module(.|\s)*\]/m)); } diff --git a/tests/legacy-cli/e2e/tests/generate/module/module-routing-child-folder.ts b/tests/legacy-cli/e2e/tests/generate/module/module-routing-child-folder.ts index 2c1d56c6d251..f2ba0e3396f7 100644 --- a/tests/legacy-cli/e2e/tests/generate/module/module-routing-child-folder.ts +++ b/tests/legacy-cli/e2e/tests/generate/module/module-routing-child-folder.ts @@ -15,8 +15,8 @@ export default async function () { await ng('generate', 'module', 'sub-dir/child', '--routing'); await expectFileToExist(join(testPath, 'sub-dir/child')); - await expectFileToExist(join(testPath, 'sub-dir/child', 'child.module.ts')); - await expectFileToExist(join(testPath, 'sub-dir/child', 'child-routing.module.ts')); + await expectFileToExist(join(testPath, 'sub-dir/child', 'child-module.ts')); + await expectFileToExist(join(testPath, 'sub-dir/child', 'child-routing-module.ts')); await expectToFail(() => expectFileToExist(join(testPath, 'sub-dir/child', 'child.spec.ts'))); // Try to run the unit tests. From 90615a88b10535d7f0197008b9d48ceac4409c23 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:50:43 -0400 Subject: [PATCH 138/160] fix(@schematics/angular): default component templates to not use `.ng.html` extension To align with recent changes to the updated style guide, Angular v20 will now generate component templates without a `.ng.html` file extension and instead use the previous `.html` by default. The `--ng-html` option is still available for use if the `.ng.html` extension is preferred in projects. --- .../{app.ng.html.template => app.html.template} | 0 .../files/module-files/src/app/app.ts.template | 2 +- .../files/standalone-files/src/app/app.ts.template | 2 +- packages/schematics/angular/application/index.ts | 2 +- .../schematics/angular/application/index_spec.ts | 14 +++++++------- .../schematics/angular/component/index_spec.ts | 6 +++--- packages/schematics/angular/component/schema.json | 4 ++-- packages/schematics/angular/module/index_spec.ts | 6 +++--- 8 files changed, 18 insertions(+), 18 deletions(-) rename packages/schematics/angular/application/files/common-files/src/app/{app.ng.html.template => app.html.template} (100%) diff --git a/packages/schematics/angular/application/files/common-files/src/app/app.ng.html.template b/packages/schematics/angular/application/files/common-files/src/app/app.html.template similarity index 100% rename from packages/schematics/angular/application/files/common-files/src/app/app.ng.html.template rename to packages/schematics/angular/application/files/common-files/src/app/app.html.template diff --git a/packages/schematics/angular/application/files/module-files/src/app/app.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app.ts.template index df7e3d72767f..ca94fc7bb99a 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app.ts.template @@ -9,7 +9,7 @@ import { Component } from '@angular/core'; %><% } %> `,<% } else { %> - templateUrl: './app.ng.html',<% } %> + templateUrl: './app.html',<% } %> standalone: false,<% if(inlineStyle) { %> styles: []<% } else { %> styleUrl: './app.<%= style %>'<% } %> diff --git a/packages/schematics/angular/application/files/standalone-files/src/app/app.ts.template b/packages/schematics/angular/application/files/standalone-files/src/app/app.ts.template index 72ba48ff0ce6..74ea464e5d04 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/app/app.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/app/app.ts.template @@ -11,7 +11,7 @@ import { RouterOutlet } from '@angular/router';<% } %> %><% } %> `,<% } else { %> - templateUrl: './app.ng.html',<% } if(inlineStyle) { %> + templateUrl: './app.html',<% } if(inlineStyle) { %> styles: [],<% } else { %> styleUrl: './app.<%= style %>'<% } %> }) diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 55a26b243ec6..2273afc311b1 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -84,7 +84,7 @@ export default function (options: ApplicationOptions): Rule { ? filter((path) => !path.endsWith('tsconfig.spec.json.template')) : noop(), componentOptions.inlineTemplate - ? filter((path) => !path.endsWith('.ng.html.template')) + ? filter((path) => !path.endsWith('app.html.template')) : noop(), applyTemplates({ utils: strings, diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index a2d32547975e..31c505a1548a 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -56,7 +56,7 @@ describe('Application Schematic', () => { '/projects/foo/src/styles.css', '/projects/foo/src/app/app-module.ts', '/projects/foo/src/app/app.css', - '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.html', '/projects/foo/src/app/app.spec.ts', '/projects/foo/src/app/app.ts', ]), @@ -266,7 +266,7 @@ describe('Application Schematic', () => { '/src/main.ts', '/src/styles.css', '/src/app/app.css', - '/src/app/app.ng.html', + '/src/app/app.html', '/src/app/app.spec.ts', '/src/app/app.ts', ]), @@ -447,7 +447,7 @@ describe('Application Schematic', () => { [ '/projects/foo/tsconfig.spec.json', '/projects/foo/src/app/app.css', - '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.html', '/projects/foo/src/app/app.spec.ts', ].forEach((x) => expect(files).not.toContain(x)); @@ -472,7 +472,7 @@ describe('Application Schematic', () => { '/projects/foo/tsconfig.spec.json', '/projects/foo/karma.conf.js', '/projects/foo/src/test.ts', - '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.html', '/projects/foo/src/app/app.spec.ts', ].forEach((x) => expect(files).not.toContain(x)); @@ -509,7 +509,7 @@ describe('Application Schematic', () => { '/projects/foo/src/index.html', '/projects/foo/src/main.ts', '/projects/foo/src/styles.css', - '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.html', '/projects/foo/src/app/app.ts', ]), ); @@ -531,7 +531,7 @@ describe('Application Schematic', () => { '/projects/foo/src/styles.css', '/projects/foo/src/app/app.config.ts', '/projects/foo/src/app/app.css', - '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.html', '/projects/foo/src/app/app.spec.ts', '/projects/foo/src/app/app.ts', ]), @@ -672,7 +672,7 @@ describe('Application Schematic', () => { '/projects/foo/src/app/app-routing-module.ts', '/projects/foo/src/app/app-module.ts', '/projects/foo/src/app/app.css', - '/projects/foo/src/app/app.ng.html', + '/projects/foo/src/app/app.html', '/projects/foo/src/app/app.spec.ts', '/projects/foo/src/app/app.ts', ]), diff --git a/packages/schematics/angular/component/index_spec.ts b/packages/schematics/angular/component/index_spec.ts index 51180aae3615..9140dfcba43f 100644 --- a/packages/schematics/angular/component/index_spec.ts +++ b/packages/schematics/angular/component/index_spec.ts @@ -310,13 +310,13 @@ describe('Component Schematic', () => { expect(tree.files).toContain('/projects/bar/src/app/foo/foo.component.ng.html'); }); - it('should use `.ng.html` extension when ngHtml is not present', async () => { + it('should not use `.ng.html` extension when ngHtml is not present', async () => { const options = { ...defaultOptions, ngHtml: undefined }; const tree = await schematicRunner.runSchematic('component', options, appTree); const content = tree.readContent('/projects/bar/src/app/foo/foo.component.ts'); - expect(content).toContain('foo.component.ng.html'); + expect(content).toContain('foo.component.html'); expect(tree.files).toContain('/projects/bar/src/app/foo/foo.component.css'); - expect(tree.files).toContain('/projects/bar/src/app/foo/foo.component.ng.html'); + expect(tree.files).toContain('/projects/bar/src/app/foo/foo.component.html'); }); it('should create the right selector with a path in the name', async () => { diff --git a/packages/schematics/angular/component/schema.json b/packages/schematics/angular/component/schema.json index d292a46f35ff..dfbc702f451e 100644 --- a/packages/schematics/angular/component/schema.json +++ b/packages/schematics/angular/component/schema.json @@ -137,8 +137,8 @@ }, "ngHtml": { "type": "boolean", - "default": true, - "description": "Generate component template files with an '.ng.html' file extension instead of '.html'. The '.ng.html' file extension is recommended by the Angular style guide." + "default": false, + "description": "Generate component template files with an '.ng.html' file extension instead of '.html'." } }, "required": ["name", "project"] diff --git a/packages/schematics/angular/module/index_spec.ts b/packages/schematics/angular/module/index_spec.ts index b819f279d8cd..661142b66fc7 100644 --- a/packages/schematics/angular/module/index_spec.ts +++ b/packages/schematics/angular/module/index_spec.ts @@ -153,7 +153,7 @@ describe('Module Schematic', () => { '/projects/bar/src/app/foo/foo-module.ts', '/projects/bar/src/app/foo/foo-routing-module.ts', '/projects/bar/src/app/foo/foo.ts', - '/projects/bar/src/app/foo/foo.ng.html', + '/projects/bar/src/app/foo/foo.html', '/projects/bar/src/app/foo/foo.css', ]), ); @@ -203,7 +203,7 @@ describe('Module Schematic', () => { expect(files).toContain('/projects/bar/src/app/foo/foo-module.ts'); expect(files).not.toContain('/projects/bar/src/app/foo/foo-routing-module.ts'); expect(files).toContain('/projects/bar/src/app/foo/foo.ts'); - expect(files).toContain('/projects/bar/src/app/foo/foo.ng.html'); + expect(files).toContain('/projects/bar/src/app/foo/foo.html'); expect(files).toContain('/projects/bar/src/app/foo/foo.css'); const appModuleContent = tree.readContent('/projects/bar/src/app/app-module.ts'); @@ -231,7 +231,7 @@ describe('Module Schematic', () => { '/projects/bar/src/app/foo-module.ts', '/projects/bar/src/app/foo-routing-module.ts', '/projects/bar/src/app/foo.ts', - '/projects/bar/src/app/foo.ng.html', + '/projects/bar/src/app/foo.html', '/projects/bar/src/app/foo.css', ]), ); From 0253bc9c452de7e585f074e602c9ed7fd04b2f51 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 7 Apr 2025 16:03:57 -0400 Subject: [PATCH 139/160] test: update E2E tests to account for the `.html` template extension Effectively reverts commit 770b993c5656c9436b420002edab178d14e278f6 while accounting for the `.component` change. --- tests/legacy-cli/e2e/tests/basic/rebuild.ts | 2 +- .../tests/build/app-shell/app-shell-with-schematic.ts | 2 +- .../build/app-shell/app-shell-with-service-worker.ts | 2 +- tests/legacy-cli/e2e/tests/build/library/setup.ts | 4 ++-- .../e2e/tests/build/prerender/error-with-sourcemaps.ts | 2 +- ...erver-routes-output-mode-server-platform-neutral.ts | 2 +- .../e2e/tests/generate/component/component-basic.ts | 2 +- .../tests/generate/component/component-child-dir.ts | 2 +- .../e2e/tests/generate/component/component-flat.ts | 2 +- .../generate/component/component-inline-template.ts | 4 +--- .../e2e/tests/generate/component/component-not-flat.ts | 2 +- .../tests/generate/component/component-path-case.ts | 4 ++-- .../e2e/tests/generate/generate-name-check.ts | 2 +- .../e2e/tests/i18n/extract-ivy-disk-cache.ts | 2 +- .../legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts | 4 ++-- tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts | 2 +- .../i18n/ivy-localize-app-shell-service-worker.ts | 2 +- .../e2e/tests/i18n/ivy-localize-app-shell.ts | 8 ++++---- tests/legacy-cli/e2e/tests/i18n/setup.ts | 10 +++++----- tests/legacy-cli/e2e/tests/misc/browsers.ts | 2 +- tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts | 4 ++-- tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts | 4 ++-- tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts | 4 ++-- tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts | 4 ++-- tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts | 2 +- 25 files changed, 39 insertions(+), 41 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/basic/rebuild.ts b/tests/legacy-cli/e2e/tests/basic/rebuild.ts index 677f6b06f38e..d7c75cce9fc5 100644 --- a/tests/legacy-cli/e2e/tests/basic/rebuild.ts +++ b/tests/legacy-cli/e2e/tests/basic/rebuild.ts @@ -83,7 +83,7 @@ export default async function () { await Promise.all([ waitForAnyProcessOutputToMatch(validBundleRegEx), writeMultipleFiles({ - 'src/app/app.ng.html': '

testingTESTING123

', + 'src/app/app.html': '

testingTESTING123

', }), ]); diff --git a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts index 9315304837d7..65f6fdb23c48 100644 --- a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts +++ b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts @@ -7,7 +7,7 @@ import { updateJsonFile } from '../../../utils/project'; const snapshots = require('../../../ng-snapshot/package.json'); export default async function () { - await appendToFile('src/app/app.ng.html', ''); + await appendToFile('src/app/app.html', ''); await ng('generate', 'app-shell', '--project', 'test-project'); const isSnapshotBuild = getGlobalVariable('argv')['ng-snapshots']; diff --git a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts index 15bea76575dd..b69e28e9ea38 100644 --- a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts +++ b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts @@ -7,7 +7,7 @@ import { updateJsonFile } from '../../../utils/project'; const snapshots = require('../../../ng-snapshot/package.json'); export default async function () { - await appendToFile('src/app/app.ng.html', ''); + await appendToFile('src/app/app.html', ''); await ng('generate', 'service-worker', '--project', 'test-project'); await ng('generate', 'app-shell', '--project', 'test-project'); diff --git a/tests/legacy-cli/e2e/tests/build/library/setup.ts b/tests/legacy-cli/e2e/tests/build/library/setup.ts index 13b658f345ba..bc67a5b1c6aa 100644 --- a/tests/legacy-cli/e2e/tests/build/library/setup.ts +++ b/tests/legacy-cli/e2e/tests/build/library/setup.ts @@ -6,13 +6,13 @@ export async function libraryConsumptionSetup(): Promise { // Force an external template await writeMultipleFiles({ - 'projects/my-lib/src/lib/my-lib.ng.html': `

my-lib works!

`, + 'projects/my-lib/src/lib/my-lib.html': `

my-lib works!

`, 'projects/my-lib/src/lib/my-lib.ts': `import { Component } from '@angular/core'; @Component({ standalone: true, selector: 'lib-my-lib', - templateUrl: './my-lib.ng.html', + templateUrl: './my-lib.html', }) export class MyLibComponent {}`, './src/app/app.ts': ` diff --git a/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts b/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts index c971f87c27d6..b7970cec4000 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts @@ -28,7 +28,7 @@ export default async function () { selector: 'app-root', standalone: true, imports: [CommonModule, RouterOutlet], - templateUrl: './app.ng.html', + templateUrl: './app.html', styleUrls: ['./app.css'] }) export class App { diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts index 991ade378dc7..130ade10ba9f 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts @@ -28,7 +28,7 @@ export default async function () { await writeMultipleFiles({ // Replace the template of app.ng.html as it makes it harder to debug - 'src/app/app.ng.html': '', + 'src/app/app.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; import { Home } from './home/home'; diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts b/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts index ac86d5beb358..b87e6acad2bf 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts @@ -11,7 +11,7 @@ export default function () { .then(() => expectFileToExist(componentDir)) .then(() => expectFileToExist(join(componentDir, 'test-component.ts'))) .then(() => expectFileToExist(join(componentDir, 'test-component.spec.ts'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.ng.html'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.html'))) .then(() => expectFileToExist(join(componentDir, 'test-component.css'))) // Try to run the unit tests. diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts b/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts index 3f8d74bf0c42..6c7dc7506bab 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts @@ -21,7 +21,7 @@ export default async function () { const componentDirectory = join(childDirectory, 'test-component'); await expectFileToExist(join(componentDirectory, 'test-component.ts')); await expectFileToExist(join(componentDirectory, 'test-component.spec.ts')); - await expectFileToExist(join(componentDirectory, 'test-component.ng.html')); + await expectFileToExist(join(componentDirectory, 'test-component.html')); await expectFileToExist(join(componentDirectory, 'test-component.css')); // Ensure unit test execute and pass diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts b/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts index c3c2b47556ca..4bdb101391fa 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts @@ -18,7 +18,7 @@ export default function () { .then(() => expectFileToExist(appDir)) .then(() => expectFileToExist(join(appDir, 'test-component.ts'))) .then(() => expectFileToExist(join(appDir, 'test-component.spec.ts'))) - .then(() => expectFileToExist(join(appDir, 'test-component.ng.html'))) + .then(() => expectFileToExist(join(appDir, 'test-component.html'))) .then(() => expectFileToExist(join(appDir, 'test-component.css'))) // Try to run the unit tests. diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts b/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts index 3f8f8bb329d3..135b97c43fcb 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts @@ -20,9 +20,7 @@ export default function () { .then(() => expectFileToExist(componentDir)) .then(() => expectFileToExist(join(componentDir, 'test-component.ts'))) .then(() => expectFileToExist(join(componentDir, 'test-component.spec.ts'))) - .then(() => - expectToFail(() => expectFileToExist(join(componentDir, 'test-component.ng.html'))), - ) + .then(() => expectToFail(() => expectFileToExist(join(componentDir, 'test-component.html')))) .then(() => expectFileToExist(join(componentDir, 'test-component.css'))) // Try to run the unit tests. diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts b/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts index ec2748b35424..eedc3926da89 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts @@ -19,7 +19,7 @@ export default function () { .then(() => expectFileToExist(componentDir)) .then(() => expectFileToExist(join(componentDir, 'test-component.ts'))) .then(() => expectFileToExist(join(componentDir, 'test-component.spec.ts'))) - .then(() => expectFileToExist(join(componentDir, 'test-component.ng.html'))) + .then(() => expectFileToExist(join(componentDir, 'test-component.html'))) .then(() => expectFileToExist(join(componentDir, 'test-component.css'))) // Try to run the unit tests. diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts b/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts index 27aaaa901d89..63d08af7099d 100644 --- a/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts +++ b/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts @@ -16,7 +16,7 @@ export default async function () { // Ensure component is created in the correct location relative to the workspace root await expectFileToExist(join(componentDirectory, 'test-component.ts')); await expectFileToExist(join(componentDirectory, 'test-component.spec.ts')); - await expectFileToExist(join(componentDirectory, 'test-component.ng.html')); + await expectFileToExist(join(componentDirectory, 'test-component.html')); await expectFileToExist(join(componentDirectory, 'test-component.css')); // Generate another component @@ -25,7 +25,7 @@ export default async function () { // Ensure component is created in the correct location relative to the workspace root await expectFileToExist(join(componentTwoDirectory, 'test-component-two.ts')); await expectFileToExist(join(componentTwoDirectory, 'test-component-two.spec.ts')); - await expectFileToExist(join(componentTwoDirectory, 'test-component-two.ng.html')); + await expectFileToExist(join(componentTwoDirectory, 'test-component-two.html')); await expectFileToExist(join(componentTwoDirectory, 'test-component-two.css')); // Ensure unit test execute and pass diff --git a/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts b/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts index f1e115dc719a..6fe89a58face 100644 --- a/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts +++ b/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts @@ -18,7 +18,7 @@ export default function () { .then(() => expectFileToExist(compDir)) .then(() => expectFileToExist(join(compDir, 'test-component.ts'))) .then(() => expectFileToExist(join(compDir, 'test-component.spec.ts'))) - .then(() => expectFileToExist(join(compDir, 'test-component.ng.html'))) + .then(() => expectFileToExist(join(compDir, 'test-component.html'))) .then(() => expectFileToExist(join(compDir, 'test-component.css'))) // Try to run the unit tests. diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts b/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts index bb1f915040ab..e5a13de3c439 100644 --- a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts +++ b/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts @@ -15,7 +15,7 @@ export default async function () { // Setup an i18n enabled component await ng('generate', 'component', 'i18n-test'); - await writeFile(join('src/app/i18n-test', 'i18n-test.ng.html'), '

Hello world

'); + await writeFile(join('src/app/i18n-test', 'i18n-test.html'), '

Hello world

'); await writeFile( 'src/app/app.ts', diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts b/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts index 66bec6217e60..a577a8c5e6a6 100644 --- a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts +++ b/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts @@ -17,7 +17,7 @@ export default async function () { await prependToFile('src/app/app.ts', `import { I18nLibTest } from 'i18n-lib-test';`); await writeFile( - 'src/app/app.ng.html', + 'src/app/app.html', `

Hello world

@@ -35,7 +35,7 @@ export default async function () { await ng('extract-i18n'); await expectFileToMatch('messages.xlf', 'Hello world'); await expectFileToMatch('messages.xlf', 'i18n-lib-test works!'); - await expectFileToMatch('messages.xlf', 'src/app/app.ng.html'); + await expectFileToMatch('messages.xlf', 'src/app/app.html'); await expectFileToMatch('messages.xlf', 'projects/i18n-lib-test/src/lib/i18n-lib-test.ts'); await uninstallPackage('@angular/localize'); diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts b/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts index 5682355915ff..72af7f87e712 100644 --- a/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts +++ b/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts @@ -9,7 +9,7 @@ import { readNgVersion } from '../../utils/version'; export default async function () { // Setup an i18n enabled component await ng('generate', 'component', 'i18n-test'); - await writeFile(join('src/app/i18n-test', 'i18n-test.ng.html'), '

Hello world

'); + await writeFile(join('src/app/i18n-test', 'i18n-test.html'), '

Hello world

'); // Actually use the generated component to ensure it is present in the application output await writeFile( 'src/app/app.ts', diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts index 8123b6f1a663..b1568be95939 100644 --- a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts +++ b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts @@ -17,7 +17,7 @@ export default async function () { : readNgVersion(); }); - await appendToFile('src/app/app.ng.html', ''); + await appendToFile('src/app/app.html', ''); // Add app-shell and service-worker await silentNg('generate', 'app-shell'); diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts index aee5afa0338b..cbabbae17140 100644 --- a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts +++ b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts @@ -23,7 +23,7 @@ export default async function () { : readNgVersion(); }); - await appendToFile('src/app/app.ng.html', ''); + await appendToFile('src/app/app.html', ''); await ng('generate', 'app-shell', '--project', 'test-project'); if (isSnapshotBuild) { @@ -62,7 +62,7 @@ export default async function () { }); await writeFile( - 'src/app/app-shell/app-shell.ng.html', + 'src/app/app-shell/app-shell.html', '

Hello i18n!

', ); @@ -70,7 +70,7 @@ export default async function () { // Extraction of i18n only works on browser targets. // Let's add the same translation that there is in the app-shell await writeFile( - 'src/app/app.ng.html', + 'src/app/app.html', '

Hello i18n!

', ); @@ -81,7 +81,7 @@ export default async function () { // Clean up app.ng.html so that we can easily // find the translation text - await writeFile('src/app/app.ng.html', ''); + await writeFile('src/app/app.html', ''); for (const { lang, translation } of langTranslations) { if (lang != 'en-US') { diff --git a/tests/legacy-cli/e2e/tests/i18n/setup.ts b/tests/legacy-cli/e2e/tests/i18n/setup.ts index 73ca0a90b00a..30fdcee1d757 100644 --- a/tests/legacy-cli/e2e/tests/i18n/setup.ts +++ b/tests/legacy-cli/e2e/tests/i18n/setup.ts @@ -108,7 +108,7 @@ export async function setupI18nConfig() { selector: 'app-root', imports: [DatePipe, RouterOutlet], standalone: true, - templateUrl: './app.ng.html' + templateUrl: './app.html' }) export class App { constructor(@Inject(LOCALE_ID) public locale: string) { } @@ -119,7 +119,7 @@ export async function setupI18nConfig() { `, ); await writeFile( - `src/app/app.ng.html`, + `src/app/app.html`, `

Hello {{ title }}!

{{ locale }}

@@ -140,7 +140,7 @@ export async function setupI18nConfig() { Hello ! - src/app/app.ng.html + src/app/app.html 2,3 An introduction header for this sample @@ -148,14 +148,14 @@ export async function setupI18nConfig() { Updated - src/app/app.ng.html + src/app/app.html 5,6 {VAR_PLURAL, plural, =0 {just now} =1 {one minute ago} other { minutes ago}} - src/app/app.ng.html + src/app/app.html 5,6 diff --git a/tests/legacy-cli/e2e/tests/misc/browsers.ts b/tests/legacy-cli/e2e/tests/misc/browsers.ts index 90c803e3b24f..14c085abaac5 100644 --- a/tests/legacy-cli/e2e/tests/misc/browsers.ts +++ b/tests/legacy-cli/e2e/tests/misc/browsers.ts @@ -11,7 +11,7 @@ export default async function () { } // Workaround for https://github.com/angular/angular/issues/32192 - await replaceInFile('src/app/app.ng.html', /class="material-icons"/g, ''); + await replaceInFile('src/app/app.html', /class="material-icons"/g, ''); await ng('build'); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts index 60e0c63a7c5a..11cf671becbf 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts @@ -20,7 +20,7 @@ export default async function () { await writeMultipleFiles({ // Replace the template of app.ng.html as it makes it harder to debug - 'src/app/app.ng.html': '', + 'src/app/app.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; import { Home } from './home/home'; @@ -94,7 +94,7 @@ export default async function () { // Modify the home component and validate the change. await modifyFileAndWaitUntilUpdated( - 'src/app/home/home.ng.html', + 'src/app/home/home.html', 'home works', 'yay home works!!!', true, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts index 92152f44a77e..c50e8c2200f6 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts @@ -21,7 +21,7 @@ export default async function () { await writeMultipleFiles({ // Replace the template of app.ng.html as it makes it harder to debug - 'src/app/app.ng.html': '', + 'src/app/app.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; import { Home } from './home/home'; @@ -87,7 +87,7 @@ export default async function () { // Modify the home component and validate the change. await modifyFileAndWaitUntilUpdated( - 'src/app/home/home.ng.html', + 'src/app/home/home.html', 'home works', 'yay home works!!!', true, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts index 99bf3a02b5eb..4a4f91066000 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts @@ -21,7 +21,7 @@ export default async function () { await writeMultipleFiles({ // Replace the template of app.ng.html as it makes it harder to debug - 'src/app/app.ng.html': '', + 'src/app/app.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; import { Home } from './home/home'; @@ -78,7 +78,7 @@ export default async function () { // Modify the home component and validate the change. await modifyFileAndWaitUntilUpdated( - 'src/app/home/home.ng.html', + 'src/app/home/home.html', 'home works', 'yay home works!!!', true, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts index 94ff1e323112..0b0b8220fe6b 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts @@ -21,7 +21,7 @@ export default async function () { await writeMultipleFiles({ // Replace the template of app.ng.html as it makes it harder to debug - 'src/app/app.ng.html': '', + 'src/app/app.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; import { Home } from './home/home'; @@ -70,7 +70,7 @@ export default async function () { // Modify the home component and validate the change. await modifyFileAndWaitUntilUpdated( - 'src/app/home/home.ng.html', + 'src/app/home/home.html', 'home works', 'yay home works!!!', true, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts index 429296c6d059..c4c0fd34ec75 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts @@ -19,7 +19,7 @@ export default async function () { await writeMultipleFiles({ // Replace the template of app.ng.html as it makes it harder to debug - 'src/app/app.ng.html': '', + 'src/app/app.html': '', 'src/app/app.routes.ts': ` import { Routes } from '@angular/router'; import { Home } from './home/home'; From fdc6291dda4903f418667d415b05367390cf829d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 7 Apr 2025 12:36:07 -0400 Subject: [PATCH 140/160] feat(@schematics/angular): add update migration to keep previous style guide generation behavior When updating to Angular v20 via `ng update`, a migration will be executed that will add schematic generation (`ng generate`) defaults to the workspace. These defaults will ensure that existing projects will continue to generate files as done in previous versions of the Angular CLI. All new projects (via `ng new`) or projects that do not explicitly contain these options in their workspace will use the updated style guide naming behavior. The option values for the `schematics` field are as follows: ``` { '@schematics/angular:component': { type: 'component' }, '@schematics/angular:directive': { type: 'directive' }, '@schematics/angular:service': { type: 'service' }, '@schematics/angular:guard': { typeSeparator: '.' }, '@schematics/angular:interceptor': { typeSeparator: '.' }, '@schematics/angular:module': { typeSeparator: '.' }, '@schematics/angular:pipe': { typeSeparator: '.' }, '@schematics/angular:resolver': { typeSeparator: '.' }, } ``` --- .../migrations/migration-collection.json | 5 + .../previous-style-guide/migration.ts | 51 +++++++ .../previous-style-guide/migration_spec.ts | 141 ++++++++++++++++++ 3 files changed, 197 insertions(+) create mode 100644 packages/schematics/angular/migrations/previous-style-guide/migration.ts create mode 100644 packages/schematics/angular/migrations/previous-style-guide/migration_spec.ts diff --git a/packages/schematics/angular/migrations/migration-collection.json b/packages/schematics/angular/migrations/migration-collection.json index a70c930290dd..659dd48728cd 100644 --- a/packages/schematics/angular/migrations/migration-collection.json +++ b/packages/schematics/angular/migrations/migration-collection.json @@ -15,6 +15,11 @@ "factory": "./update-module-resolution/migration", "description": "Update 'moduleResolution' to 'bundler' in TypeScript configurations. You can read more about this, here: https://www.typescriptlang.org/tsconfig/#moduleResolution" }, + "previous-style-guide": { + "version": "20.0.0", + "factory": "./previous-style-guide/migration", + "description": "Update workspace generation defaults to maintain previous style guide behavior." + }, "use-application-builder": { "version": "20.0.0", "factory": "./use-application-builder/migration", diff --git a/packages/schematics/angular/migrations/previous-style-guide/migration.ts b/packages/schematics/angular/migrations/previous-style-guide/migration.ts new file mode 100644 index 000000000000..1590948b243d --- /dev/null +++ b/packages/schematics/angular/migrations/previous-style-guide/migration.ts @@ -0,0 +1,51 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import type { Rule } from '@angular-devkit/schematics'; +import { updateWorkspace } from '../../utility/workspace'; + +const TYPE_SCHEMATICS = ['component', 'directive', 'service'] as const; + +const SEPARATOR_SCHEMATICS = ['guard', 'interceptor', 'module', 'pipe', 'resolver'] as const; + +export default function (): Rule { + return updateWorkspace((workspace) => { + let schematicsDefaults = workspace.extensions['schematics']; + + // Ensure "schematics" field is an object + if ( + !schematicsDefaults || + typeof schematicsDefaults !== 'object' || + Array.isArray(schematicsDefaults) + ) { + schematicsDefaults = workspace.extensions['schematics'] = {}; + } + + // Add "type" value for each schematic to continue generating a type suffix. + // New default is an empty type value. + for (const schematicName of TYPE_SCHEMATICS) { + const schematic = (schematicsDefaults[`@schematics/angular:${schematicName}`] ??= {}); + if (typeof schematic === 'object' && !Array.isArray(schematic) && !('type' in schematic)) { + schematic['type'] = schematicName; + } + } + + // Add "typeSeparator" value for each schematic to continue generating "." before type. + // New default is an "-" type value. + for (const schematicName of SEPARATOR_SCHEMATICS) { + const schematic = (schematicsDefaults[`@schematics/angular:${schematicName}`] ??= {}); + if ( + typeof schematic === 'object' && + !Array.isArray(schematic) && + !('typeSeparator' in schematic) + ) { + schematic['typeSeparator'] = '.'; + } + } + }); +} diff --git a/packages/schematics/angular/migrations/previous-style-guide/migration_spec.ts b/packages/schematics/angular/migrations/previous-style-guide/migration_spec.ts new file mode 100644 index 000000000000..342da3910e74 --- /dev/null +++ b/packages/schematics/angular/migrations/previous-style-guide/migration_spec.ts @@ -0,0 +1,141 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { EmptyTree } from '@angular-devkit/schematics'; +import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; +import { ProjectType, WorkspaceSchema } from '../../utility/workspace-models'; + +function createWorkSpaceConfig(tree: UnitTestTree, initialSchematicsValue?: unknown) { + const angularConfig: WorkspaceSchema = { + version: 1, + projects: { + app: { + root: '/project/lib', + sourceRoot: '/project/app/src', + projectType: ProjectType.Application, + prefix: 'app', + architect: {}, + }, + }, + }; + + if (initialSchematicsValue !== undefined) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (angularConfig as any).schematics = initialSchematicsValue; + } + + tree.create('/angular.json', JSON.stringify(angularConfig, undefined, 2)); +} + +describe(`Migration to update 'angular.json'.`, () => { + const schematicName = 'previous-style-guide'; + const schematicRunner = new SchematicTestRunner( + 'migrations', + require.resolve('../migration-collection.json'), + ); + + let tree: UnitTestTree; + beforeEach(() => { + tree = new UnitTestTree(new EmptyTree()); + }); + + it(`should add defaults if no "schematics" workspace field is present`, async () => { + createWorkSpaceConfig(tree); + + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const { schematics } = JSON.parse(newTree.readContent('/angular.json')); + + expect(schematics).toEqual({ + '@schematics/angular:component': { type: 'component' }, + '@schematics/angular:directive': { type: 'directive' }, + '@schematics/angular:service': { type: 'service' }, + '@schematics/angular:guard': { typeSeparator: '.' }, + '@schematics/angular:interceptor': { typeSeparator: '.' }, + '@schematics/angular:module': { typeSeparator: '.' }, + '@schematics/angular:pipe': { typeSeparator: '.' }, + '@schematics/angular:resolver': { typeSeparator: '.' }, + }); + }); + + it(`should add defaults if empty "schematics" workspace field is present`, async () => { + createWorkSpaceConfig(tree, {}); + + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const { schematics } = JSON.parse(newTree.readContent('/angular.json')); + + expect(schematics).toEqual({ + '@schematics/angular:component': { type: 'component' }, + '@schematics/angular:directive': { type: 'directive' }, + '@schematics/angular:service': { type: 'service' }, + '@schematics/angular:guard': { typeSeparator: '.' }, + '@schematics/angular:interceptor': { typeSeparator: '.' }, + '@schematics/angular:module': { typeSeparator: '.' }, + '@schematics/angular:pipe': { typeSeparator: '.' }, + '@schematics/angular:resolver': { typeSeparator: '.' }, + }); + }); + + it(`should add defaults if invalid "schematics" workspace field is present`, async () => { + createWorkSpaceConfig(tree, 10); + + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const { schematics } = JSON.parse(newTree.readContent('/angular.json')); + + expect(schematics).toEqual({ + '@schematics/angular:component': { type: 'component' }, + '@schematics/angular:directive': { type: 'directive' }, + '@schematics/angular:service': { type: 'service' }, + '@schematics/angular:guard': { typeSeparator: '.' }, + '@schematics/angular:interceptor': { typeSeparator: '.' }, + '@schematics/angular:module': { typeSeparator: '.' }, + '@schematics/angular:pipe': { typeSeparator: '.' }, + '@schematics/angular:resolver': { typeSeparator: '.' }, + }); + }); + + it(`should add defaults if existing unrelated "schematics" workspace defaults are present`, async () => { + createWorkSpaceConfig(tree, { + '@schematics/angular:component': { style: 'scss' }, + }); + + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const { schematics } = JSON.parse(newTree.readContent('/angular.json')); + + expect(schematics).toEqual({ + '@schematics/angular:component': { style: 'scss', type: 'component' }, + '@schematics/angular:directive': { type: 'directive' }, + '@schematics/angular:service': { type: 'service' }, + '@schematics/angular:guard': { typeSeparator: '.' }, + '@schematics/angular:interceptor': { typeSeparator: '.' }, + '@schematics/angular:module': { typeSeparator: '.' }, + '@schematics/angular:pipe': { typeSeparator: '.' }, + '@schematics/angular:resolver': { typeSeparator: '.' }, + }); + }); + + it(`should not overwrite defaults if existing "schematics" workspace defaults are present`, async () => { + createWorkSpaceConfig(tree, { + '@schematics/angular:component': { type: 'example' }, + '@schematics/angular:guard': { typeSeparator: '-' }, + }); + + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const { schematics } = JSON.parse(newTree.readContent('/angular.json')); + + expect(schematics).toEqual({ + '@schematics/angular:component': { type: 'example' }, + '@schematics/angular:directive': { type: 'directive' }, + '@schematics/angular:service': { type: 'service' }, + '@schematics/angular:guard': { typeSeparator: '-' }, + '@schematics/angular:interceptor': { typeSeparator: '.' }, + '@schematics/angular:module': { typeSeparator: '.' }, + '@schematics/angular:pipe': { typeSeparator: '.' }, + '@schematics/angular:resolver': { typeSeparator: '.' }, + }); + }); +}); From 74f70af6bd925e0661d73be8e98feb427a9f60b4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 8 Apr 2025 09:53:34 -0400 Subject: [PATCH 141/160] build: remove unneeded `rollup-plugin-sourcemaps` dependency from root The `rollup-plugin-sourcemaps` dependency was previously needed by the `ng_package` rule but this has been moved to a separate legacy package.json location within the repository and is no longer needed in the root package.json. --- package.json | 1 - pnpm-lock.yaml | 66 -------------------------------------------------- 2 files changed, 67 deletions(-) diff --git a/package.json b/package.json index 46720f72f994..b2925f81b6cd 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,6 @@ "quicktype-core": "23.0.171", "rollup": "4.39.0", "rollup-license-plugin": "~3.0.1", - "rollup-plugin-sourcemaps": "^0.6.0", "semver": "7.7.1", "shelljs": "^0.9.0", "source-map-support": "0.5.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2c36129a4705..4a5bc30d01c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -269,9 +269,6 @@ importers: rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 - rollup-plugin-sourcemaps: - specifier: ^0.6.0 - version: 0.6.3(@types/node@20.17.30)(rollup@4.39.0) semver: specifier: 7.7.1 version: 7.7.1 @@ -2414,12 +2411,6 @@ packages: rollup: optional: true - '@rollup/pluginutils@3.1.0': - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -2666,9 +2657,6 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@0.0.39': - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} @@ -3368,11 +3356,6 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} @@ -3988,10 +3971,6 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - deep-equal@1.0.1: resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} @@ -4409,9 +4388,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -6797,16 +6773,6 @@ packages: rollup: ^3.29.4 || ^4 typescript: 5.8.3 - rollup-plugin-sourcemaps@0.6.3: - resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} - engines: {node: '>=10.0.0'} - peerDependencies: - '@types/node': '>=10.0.0' - rollup: '>=0.31.2' - peerDependenciesMeta: - '@types/node': - optional: true - rollup@4.39.0: resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -7091,10 +7057,6 @@ packages: peerDependencies: webpack: ^5.72.1 - source-map-resolve@0.6.0: - resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - source-map-support@0.4.18: resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} @@ -9619,13 +9581,6 @@ snapshots: optionalDependencies: rollup: 4.39.0 - '@rollup/pluginutils@3.1.0(rollup@4.39.0)': - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 4.39.0 - '@rollup/pluginutils@5.1.4(rollup@4.39.0)': dependencies: '@types/estree': 1.0.7 @@ -9861,8 +9816,6 @@ snapshots: '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 - '@types/estree@0.0.39': {} - '@types/estree@1.0.7': {} '@types/express-serve-static-core@4.19.6': @@ -10859,8 +10812,6 @@ snapshots: asynckit@0.4.0: {} - atob@2.1.2: {} - atomic-sleep@1.0.0: {} autoprefixer@10.4.21(postcss@8.5.3): @@ -11562,8 +11513,6 @@ snapshots: decamelize@1.2.0: {} - decode-uri-component@0.2.2: {} - deep-equal@1.0.1: {} deep-is@0.1.4: {} @@ -12083,8 +12032,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@1.0.1: {} - estree-walker@2.0.2: {} esutils@2.0.3: {} @@ -14763,14 +14710,6 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.26.2 - rollup-plugin-sourcemaps@0.6.3(@types/node@20.17.30)(rollup@4.39.0): - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.39.0) - rollup: 4.39.0 - source-map-resolve: 0.6.0 - optionalDependencies: - '@types/node': 20.17.30 - rollup@4.39.0: dependencies: '@types/estree': 1.0.7 @@ -15180,11 +15119,6 @@ snapshots: source-map-js: 1.2.1 webpack: 5.99.1(esbuild@0.25.2) - source-map-resolve@0.6.0: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - source-map-support@0.4.18: dependencies: source-map: 0.5.7 From a175d285d611678dd1f6d29de10c0a0dea09f780 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:06:46 -0400 Subject: [PATCH 142/160] test: remove bundle budget from JIT production E2E test Applications built with JIT will be significantly larger due to both the need to bundle the Angular compiler and the extra metadata that must be retained for each Angular construct. The initial bundle budget in new applications is specified for an AOT application and may not pass if used with JIT. --- tests/legacy-cli/e2e/tests/build/jit-prod.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/legacy-cli/e2e/tests/build/jit-prod.ts b/tests/legacy-cli/e2e/tests/build/jit-prod.ts index 7d6e6e767736..2042b0a8c93d 100644 --- a/tests/legacy-cli/e2e/tests/build/jit-prod.ts +++ b/tests/legacy-cli/e2e/tests/build/jit-prod.ts @@ -7,7 +7,12 @@ export default async function () { await updateJsonFile('angular.json', (configJson) => { const appArchitect = configJson.projects['test-project'].architect; appArchitect.build.configurations['production'].aot = false; + + // JIT applications have significantly larger sizes + appArchitect.build.configurations['production'].budgets = []; + if (!getGlobalVariable('argv')['esbuild']) { + // The build optimizer option does not exist with the application build system appArchitect.build.configurations['production'].buildOptimizer = false; } }); From 8dbae05bec7e78e5e62932ca25e937ece3b05ba5 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 8 Apr 2025 22:04:43 +0000 Subject: [PATCH 143/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 46 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 38 +++++++-------- package.json | 2 +- pnpm-lock.yaml | 13 +++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------- 9 files changed, 73 insertions(+), 72 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 4e935e0e8602..aedcc2ea6532 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@6127cf117a8ed42945a7d8c09bc225851d58ef94 + - uses: angular/dev-infra/github-actions/branch-manager@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 49ec398cb4ae..ac411692a3d0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -59,11 +59,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,13 +85,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -108,9 +108,9 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: allow_windows_rbe: true google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} @@ -134,13 +134,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -158,13 +158,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -178,13 +178,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -214,11 +214,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 1d5501f5435f..ac9d73c39729 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@6127cf117a8ed42945a7d8c09bc225851d58ef94 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@6127cf117a8ed42945a7d8c09bc225851d58ef94 + - uses: angular/dev-infra/github-actions/post-approval-changes@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index e97a78e7a293..dd958b875b54 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@6127cf117a8ed42945a7d8c09bc225851d58ef94 + - uses: angular/dev-infra/github-actions/feature-request@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index e96566e2510e..14a667a376c2 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e81bffaffb0f..9a92f9109037 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/linting/licenses@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,9 +130,9 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 with: allow_windows_rbe: true - name: Run CLI E2E tests @@ -153,13 +153,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -176,12 +176,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@6127cf117a8ed42945a7d8c09bc225851d58ef94 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index b2925f81b6cd..d9680d5060cf 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "20.0.0-next.5", "@angular/localize": "20.0.0-next.5", "@angular/material": "20.0.0-next.5", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9128e88714212404ed17bbed46903547815a52ce", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#71904c53ace2c540d3cf1cd6151ac08665f9179e", "@angular/platform-browser": "20.0.0-next.5", "@angular/platform-server": "20.0.0-next.5", "@angular/router": "20.0.0-next.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a5bc30d01c6..dc6318638bdd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: 20.0.0-next.5 version: 20.0.0-next.5(zed5mlcqqzocvcjadwm7aowd6q) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#9128e88714212404ed17bbed46903547815a52ce - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9128e88714212404ed17bbed46903547815a52ce(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#71904c53ace2c540d3cf1cd6151ac08665f9179e + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/71904c53ace2c540d3cf1cd6151ac08665f9179e(encoding@0.1.13) '@angular/platform-browser': specifier: 20.0.0-next.5 version: 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) @@ -951,9 +951,9 @@ packages: '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9128e88714212404ed17bbed46903547815a52ce': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9128e88714212404ed17bbed46903547815a52ce} - version: 0.0.0-6127cf117a8ed42945a7d8c09bc225851d58ef94 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/71904c53ace2c540d3cf1cd6151ac08665f9179e': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/71904c53ace2c540d3cf1cd6151ac08665f9179e} + version: 0.0.0-b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 hasBin: true '@angular/platform-browser@20.0.0-next.5': @@ -3470,6 +3470,7 @@ packages: bignumber.js@9.2.0: resolution: {integrity: sha512-JocpCSOixzy5XFJi2ub6IMmV/G9i8Lrm2lZvwBv9xPdglmZM0ufDVBbjbrfU/zuLvBfD7Bv2eYxz9i+OHTgkew==} + deprecated: pkg version number incorrect binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -8049,7 +8050,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9128e88714212404ed17bbed46903547815a52ce(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/71904c53ace2c540d3cf1cd6151ac08665f9179e(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 1d84ebb00b05..878fdb7ca8af 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#8a700292573bcbe01c59a0c42ac7565654b7ce28", - "@angular/cdk": "github:angular/cdk-builds#4694005096eb41cbebe7efcb2d1fcc3f989d3a96", - "@angular/common": "github:angular/common-builds#ee4e32dca7e5d29b98d977d5d8403d34d5bfa135", - "@angular/compiler": "github:angular/compiler-builds#b3e3d45c07704eb6ae03cd3feaa7cf2acb63255b", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#0b09d6d8fc6b8fbbe3994146cc8cee296b2f0bbb", - "@angular/core": "github:angular/core-builds#23804029706baab2077651ba85b997afa53bb839", - "@angular/forms": "github:angular/forms-builds#83976ba1417aad07fd6b9a912b88658b1aeb45e2", - "@angular/language-service": "github:angular/language-service-builds#1d8ec45e1243a16aa664af5f43a558304d1d2346", - "@angular/localize": "github:angular/localize-builds#175179ca97ce7a8d0cc7bf01114ac7aafde48a19", - "@angular/material": "github:angular/material-builds#b386c6a6323a75491c0b5b463f3e20affef876b4", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a89d25cbcf66e12765bb7cd559f5b97486f69ae5", - "@angular/platform-browser": "github:angular/platform-browser-builds#607b0608f5200487246530abefcae5602c43a648", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#141db7773fc454bbbc1fd2d7ce9355f69c100c52", - "@angular/platform-server": "github:angular/platform-server-builds#d6e24e8cf99d89132dee24116985ad5fe5459888", - "@angular/router": "github:angular/router-builds#459c1737c0d9286f2f56e5d63394dd047557b3cc", - "@angular/service-worker": "github:angular/service-worker-builds#e8df3237446ded0a43fcea55135cc7ace9001668" + "@angular/animations": "github:angular/animations-builds#e2717dcb5b3c553f463043bce6d18ff7a437485a", + "@angular/cdk": "github:angular/cdk-builds#3949f269ae6b0dffd65beac126ed1451be8dabcb", + "@angular/common": "github:angular/common-builds#007769e1e45fc9a072ed6c2fe9619adbdbe88afa", + "@angular/compiler": "github:angular/compiler-builds#86ebca3b6857c90fa7f9193c61b9145133b55ca0", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#84c4a33fd56594d9e3343ffff1b00efa8576d997", + "@angular/core": "github:angular/core-builds#3b9c1bf0dc876dc42bb2c1f87c79ab9defff88e7", + "@angular/forms": "github:angular/forms-builds#998f5dde4e0f3be77a70a043a7a31e4878573410", + "@angular/language-service": "github:angular/language-service-builds#d3f1e6f0d5ba68ab20446af009307539fb4d31ef", + "@angular/localize": "github:angular/localize-builds#1992d88856f4ba32382bb27530987b9793ef4649", + "@angular/material": "github:angular/material-builds#56b58aea08c4b93f3f2c15853d48c6f86523f897", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a87bedc767855410cc0be27b31005f8c03655463", + "@angular/platform-browser": "github:angular/platform-browser-builds#530d2065d254fe695cddc24a3dcd3b1faed2e551", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#5a280908316a1cbf5b993db3fd00a11f4633c1db", + "@angular/platform-server": "github:angular/platform-server-builds#569fb8f99de02748e57a24a4600015225d05b50d", + "@angular/router": "github:angular/router-builds#24abf7c68a380620734103c9b1b89197c966d9d5", + "@angular/service-worker": "github:angular/service-worker-builds#0869deac34df17466faf02641331fd5c6572d5bf" } } From 1b87795ecf4fae6e15bc904d95a1328bbdaac7ed Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 8 Apr 2025 05:03:53 +0000 Subject: [PATCH 144/160] build: update devinfra digest to b45dfa7 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 037d99289902..a6bfaf0552c3 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "849c602a3585397b0680aaeb7fe82730fd1c4215", + commit = "b45dfa77df2021b23eeda5928ca6cd8bb89b21e7", remote = "https://github.com/angular/dev-infra.git", ) From 0a84d6ce7f9acf012ef495b5b3511624d4151723 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 8 Apr 2025 05:03:56 +0000 Subject: [PATCH 145/160] build: update github/codeql-action action to v3.28.15 --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 79562ca40a9c..62c593627fad 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -46,6 +46,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14 + uses: github/codeql-action/upload-sarif@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 with: sarif_file: results.sarif From ee2b4cbfe5a4d25cac40f55ab245332429fdaec2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 8 Apr 2025 23:04:03 +0000 Subject: [PATCH 146/160] build: update dependency webpack to v5.99.5 --- .../angular_devkit/build_angular/package.json | 2 +- .../angular_devkit/build_webpack/package.json | 2 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 100 +++++++++--------- 4 files changed, 53 insertions(+), 53 deletions(-) diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index e101b2f645b6..f73a6504390e 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -56,7 +56,7 @@ "terser": "5.39.0", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.99.1", + "webpack": "5.99.5", "webpack-dev-middleware": "7.4.2", "webpack-dev-server": "5.2.1", "webpack-merge": "6.0.1", diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 089e5d16dce5..255d4e44a54e 100644 --- a/packages/angular_devkit/build_webpack/package.json +++ b/packages/angular_devkit/build_webpack/package.json @@ -22,7 +22,7 @@ "devDependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", - "webpack": "5.99.1", + "webpack": "5.99.5", "webpack-dev-server": "5.2.1" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 9a9a42b18065..02a88ebc3054 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "20.0.0-next.5", "@angular/compiler-cli": "20.0.0-next.5", "typescript": "5.8.3", - "webpack": "5.99.1" + "webpack": "5.99.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc6318638bdd..76aac87d8916 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -622,16 +622,16 @@ importers: version: 10.4.21(postcss@8.5.3) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.26.10)(webpack@5.99.1(esbuild@0.25.2)) + version: 10.0.0(@babel/core@7.26.10)(webpack@5.99.5(esbuild@0.25.2)) browserslist: specifier: ^4.21.5 version: 4.24.4 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.99.1(esbuild@0.25.2)) + version: 13.0.0(webpack@5.99.5(esbuild@0.25.2)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.99.1(esbuild@0.25.2)) + version: 7.1.2(webpack@5.99.5(esbuild@0.25.2)) esbuild-wasm: specifier: 0.25.2 version: 0.25.2 @@ -655,16 +655,16 @@ importers: version: 4.3.0 less-loader: specifier: 12.2.0 - version: 12.2.0(less@4.3.0)(webpack@5.99.1(esbuild@0.25.2)) + version: 12.2.0(less@4.3.0)(webpack@5.99.5(esbuild@0.25.2)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.99.1(esbuild@0.25.2)) + version: 4.0.2(webpack@5.99.5(esbuild@0.25.2)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.2 - version: 2.9.2(webpack@5.99.1(esbuild@0.25.2)) + version: 2.9.2(webpack@5.99.5(esbuild@0.25.2)) open: specifier: 10.1.0 version: 10.1.0 @@ -682,7 +682,7 @@ importers: version: 8.5.3 postcss-loader: specifier: 8.1.1 - version: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.1(esbuild@0.25.2)) + version: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.5(esbuild@0.25.2)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -694,13 +694,13 @@ importers: version: 1.86.3 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.86.3)(webpack@5.99.1(esbuild@0.25.2)) + version: 16.0.5(sass@1.86.3)(webpack@5.99.5(esbuild@0.25.2)) semver: specifier: 7.7.1 version: 7.7.1 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.99.1(esbuild@0.25.2)) + version: 5.0.0(webpack@5.99.5(esbuild@0.25.2)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -714,20 +714,20 @@ importers: specifier: 2.8.1 version: 2.8.1 webpack: - specifier: 5.99.1 - version: 5.99.1(esbuild@0.25.2) + specifier: 5.99.5 + version: 5.99.5(esbuild@0.25.2) webpack-dev-middleware: specifier: 7.4.2 - version: 7.4.2(webpack@5.99.1(esbuild@0.25.2)) + version: 7.4.2(webpack@5.99.5(esbuild@0.25.2)) webpack-dev-server: specifier: 5.2.1 - version: 5.2.1(webpack@5.99.1(esbuild@0.25.2)) + version: 5.2.1(webpack@5.99.5(esbuild@0.25.2)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.99.1(esbuild@0.25.2)) + version: 5.1.0(webpack@5.99.5(esbuild@0.25.2)) optionalDependencies: esbuild: specifier: 0.25.2 @@ -765,11 +765,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack webpack: - specifier: 5.99.1 - version: 5.99.1(esbuild@0.25.2) + specifier: 5.99.5 + version: 5.99.5(esbuild@0.25.2) webpack-dev-server: specifier: 5.2.1 - version: 5.2.1(webpack@5.99.1(esbuild@0.25.2)) + version: 5.2.1(webpack@5.99.5(esbuild@0.25.2)) packages/angular_devkit/core: dependencies: @@ -847,8 +847,8 @@ importers: specifier: 5.8.3 version: 5.8.3 webpack: - specifier: 5.99.1 - version: 5.99.1(esbuild@0.25.2) + specifier: 5.99.5 + version: 5.99.5(esbuild@0.25.2) packages/schematics/angular: dependencies: @@ -7737,8 +7737,8 @@ packages: html-webpack-plugin: optional: true - webpack@5.99.1: - resolution: {integrity: sha512-o9gY7ibHPFxLjF6NtvQ6+5CGknsPTRllsL6SEnqR2Zhjk02hiIioJYLS7dvrWaykrRbbmhvDeKp36mKHNbKYiw==} + webpack@5.99.5: + resolution: {integrity: sha512-q+vHBa6H9qwBLUlHL4Y7L0L1/LlyBKZtS9FHNCQmtayxjI5RKC9yD8gpvLeqGv5lCQp1Re04yi0MF40pf30Pvg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -10835,11 +10835,11 @@ snapshots: b4a@1.6.7: {} - babel-loader@10.0.0(@babel/core@7.26.10)(webpack@5.99.1(esbuild@0.25.2)): + babel-loader@10.0.0(@babel/core@7.26.10)(webpack@5.99.5(esbuild@0.25.2)): dependencies: '@babel/core': 7.26.10 find-up: 5.0.0 - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): dependencies: @@ -11370,14 +11370,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.0(webpack@5.99.1(esbuild@0.25.2)): + copy-webpack-plugin@13.0.0(webpack@5.99.5(esbuild@0.25.2)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 tinyglobby: 0.2.12 - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) core-js-compat@3.41.0: dependencies: @@ -11431,7 +11431,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.99.1(esbuild@0.25.2)): + css-loader@7.1.2(webpack@5.99.5(esbuild@0.25.2)): dependencies: icss-utils: 5.1.0(postcss@8.5.3) postcss: 8.5.3 @@ -11442,7 +11442,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.1 optionalDependencies: - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) css-select@5.1.0: dependencies: @@ -13378,11 +13378,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.2 - less-loader@12.2.0(less@4.3.0)(webpack@5.99.1(esbuild@0.25.2)): + less-loader@12.2.0(less@4.3.0)(webpack@5.99.5(esbuild@0.25.2)): dependencies: less: 4.3.0 optionalDependencies: - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) less@4.3.0: dependencies: @@ -13403,11 +13403,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.99.1(esbuild@0.25.2)): + license-webpack-plugin@4.0.2(webpack@5.99.5(esbuild@0.25.2)): dependencies: webpack-sources: 3.2.3 optionalDependencies: - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) lie@3.3.0: dependencies: @@ -13635,11 +13635,11 @@ snapshots: mimic-function@5.0.1: {} - mini-css-extract-plugin@2.9.2(webpack@5.99.1(esbuild@0.25.2)): + mini-css-extract-plugin@2.9.2(webpack@5.99.5(esbuild@0.25.2)): dependencies: schema-utils: 4.3.0 tapable: 2.2.1 - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) minimalistic-assert@1.0.1: {} @@ -14253,14 +14253,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.1(esbuild@0.25.2)): + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.5(esbuild@0.25.2)): dependencies: cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 semver: 7.7.1 optionalDependencies: - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) transitivePeerDependencies: - typescript @@ -14786,12 +14786,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.86.3)(webpack@5.99.1(esbuild@0.25.2)): + sass-loader@16.0.5(sass@1.86.3)(webpack@5.99.5(esbuild@0.25.2)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.86.3 - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) sass@1.86.3: dependencies: @@ -15114,11 +15114,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.99.1(esbuild@0.25.2)): + source-map-loader@5.0.0(webpack@5.99.5(esbuild@0.25.2)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) source-map-support@0.4.18: dependencies: @@ -15393,14 +15393,14 @@ snapshots: - encoding - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.25.2)(webpack@5.99.1(esbuild@0.25.2)): + terser-webpack-plugin@5.3.14(esbuild@0.25.2)(webpack@5.99.5(esbuild@0.25.2)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) optionalDependencies: esbuild: 0.25.2 @@ -15835,7 +15835,7 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-dev-middleware@7.4.2(webpack@5.99.1(esbuild@0.25.2)): + webpack-dev-middleware@7.4.2(webpack@5.99.5(esbuild@0.25.2)): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -15844,9 +15844,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.0 optionalDependencies: - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) - webpack-dev-server@5.2.1(webpack@5.99.1(esbuild@0.25.2)): + webpack-dev-server@5.2.1(webpack@5.99.5(esbuild@0.25.2)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -15874,10 +15874,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.99.1(esbuild@0.25.2)) + webpack-dev-middleware: 7.4.2(webpack@5.99.5(esbuild@0.25.2)) ws: 8.18.1 optionalDependencies: - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) transitivePeerDependencies: - bufferutil - debug @@ -15892,12 +15892,12 @@ snapshots: webpack-sources@3.2.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.99.1(esbuild@0.25.2)): + webpack-subresource-integrity@5.1.0(webpack@5.99.5(esbuild@0.25.2)): dependencies: typed-assert: 1.0.9 - webpack: 5.99.1(esbuild@0.25.2) + webpack: 5.99.5(esbuild@0.25.2) - webpack@5.99.1(esbuild@0.25.2): + webpack@5.99.5(esbuild@0.25.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -15919,7 +15919,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.25.2)(webpack@5.99.1(esbuild@0.25.2)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.2)(webpack@5.99.5(esbuild@0.25.2)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: From eeba3a8889bc3a0505afcb411ced91aad48b6c92 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 9 Apr 2025 07:14:55 +0000 Subject: [PATCH 147/160] refactor: add missing peer depedency on `@angular/core` and `tslib` This is required to support strict mode in pnpm. Closes #30068 --- packages/angular/build/package.json | 5 +++++ packages/angular_devkit/build_angular/package.json | 4 ++++ tests/legacy-cli/e2e/tests/misc/dedupe-duplicate-modules.ts | 4 ++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 9ad078b5b9d3..ef8908649d10 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -57,6 +57,7 @@ "rxjs": "7.8.2" }, "peerDependencies": { + "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/localize": "0.0.0-ANGULAR-FW-PEER-DEP", @@ -69,9 +70,13 @@ "ng-packagr": "0.0.0-NG-PACKAGR-PEER-DEP", "postcss": "^8.4.0", "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "tslib": "^2.3.0", "typescript": ">=5.8 <5.9" }, "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, "@angular/localize": { "optional": true }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index f73a6504390e..1d4201e95a28 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -73,6 +73,7 @@ "undici": "7.7.0" }, "peerDependencies": { + "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/localize": "0.0.0-ANGULAR-FW-PEER-DEP", "@angular/platform-browser": "0.0.0-ANGULAR-FW-PEER-DEP", @@ -90,6 +91,9 @@ "typescript": ">=5.8 <5.9" }, "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, "@angular/localize": { "optional": true }, diff --git a/tests/legacy-cli/e2e/tests/misc/dedupe-duplicate-modules.ts b/tests/legacy-cli/e2e/tests/misc/dedupe-duplicate-modules.ts index 8c5a094cf9aa..5047021566eb 100644 --- a/tests/legacy-cli/e2e/tests/misc/dedupe-duplicate-modules.ts +++ b/tests/legacy-cli/e2e/tests/misc/dedupe-duplicate-modules.ts @@ -11,7 +11,7 @@ export default async function () { await updateJsonFile('package.json', (json) => { json.dependencies = { ...json.dependencies, - 'tslib': '2.0.0', + 'tslib': '^2.0.0', 'tslib-1': 'npm:tslib@1.13.0', 'tslib-1-copy': 'npm:tslib@1.13.0', }; @@ -56,7 +56,7 @@ export default async function () { throw new Error('Expected stderr to contain [DedupeModuleResolvePlugin] log for tslib.'); } - await expectFileToMatch(outFile, './node_modules/tslib/tslib.es6.js'); + await expectFileToMatch(outFile, './node_modules/tslib/tslib.es6.mjs'); } finally { await rimraf('node_modules/tslib'); await gitClean(); From 3e24a59a9db9f11a80fa616c68be4380c4816ed5 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:26:19 -0400 Subject: [PATCH 148/160] fix(@angular/build): disable TypeScript `composite` option with Angular compiler The Angular compiler does not directly support the `composite` option within a referenced `tsconfig` file. If this option is enabled, the Angular compiler will crash due to the Angular compiler not leveraging the TypeScript BuilderProgram infrastructure. Since the Angular compiler is not aware of composite projects nor project references, the `composite` option is disabled when options are passed to the Angular compiler. This has no effect on non- Angular related usages of the `tsconfig`. --- .../angular/build/src/tools/esbuild/angular/compiler-plugin.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts index 8f58d2cb5978..c30bc4eab0c3 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -705,6 +705,7 @@ function createCompilerOptionsTransformer( return { ...compilerOptions, noEmitOnError: false, + composite: false, inlineSources: !!pluginOptions.sourcemap, inlineSourceMap: !!pluginOptions.sourcemap, sourceMap: undefined, From 5a42f159d81dd45170198638f798b7d9138f9ed6 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 9 Apr 2025 10:13:07 -0700 Subject: [PATCH 149/160] docs: release notes for the v17.3.16 release --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94887110c181..c52e734f6a91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ + + +# 17.3.16 (2025-04-09) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------- | +| [5aa53b40c](https://github.com/angular/angular-cli/commit/5aa53b40c34e1555548d201f840a5ffc01f14601) | fix | remove undici from dependencies | +| [fce61564d](https://github.com/angular/angular-cli/commit/fce61564ded8c476ef1c257d2844b1a1560af732) | fix | update vite to 5.4.17 | + + + # 20.0.0-next.4 (2025-04-02) From b95123604c9e4cc8f522553aabaa3e978ab933a1 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 9 Apr 2025 10:40:07 -0700 Subject: [PATCH 150/160] docs: release notes for the v18.2.18 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c52e734f6a91..4d68764d33eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 18.2.18 (2025-04-09) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | +| [4245ca7b4](https://github.com/angular/angular-cli/commit/4245ca7b434e0aa859c805c459ce50238601b940) | fix | update vite to 5.4.17 | + + + # 17.3.16 (2025-04-09) From 427bd846f552b393cb969472a05488ac11d47e9f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:21:10 -0400 Subject: [PATCH 151/160] fix(@ngtools/webpack): disable TypeScript composite option with Angular compiler The Angular compiler does not directly support the `composite` option within a referenced `tsconfig` file. If this option is enabled, the Angular compiler will crash due to the Angular compiler not leveraging the TypeScript BuilderProgram infrastructure. Since the Angular compiler is not aware of composite projects nor project references, the `composite` option is disabled when options are passed to the Angular compiler. This has no effect on non- Angular related usages of the `tsconfig`. --- packages/ngtools/webpack/src/ivy/plugin.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/ngtools/webpack/src/ivy/plugin.ts b/packages/ngtools/webpack/src/ivy/plugin.ts index 6b054c605fe1..f46b1360f26a 100644 --- a/packages/ngtools/webpack/src/ivy/plugin.ts +++ b/packages/ngtools/webpack/src/ivy/plugin.ts @@ -410,6 +410,7 @@ export class AngularWebpackPlugin { this.pluginOptions.tsconfig, this.pluginOptions.compilerOptions, ); + compilerOptions.composite = false; compilerOptions.noEmitOnError = false; compilerOptions.suppressOutputPathCheck = true; compilerOptions.outDir = undefined; From 60cf46534b8f131f50ca85025ab7fd42b2f7b7e9 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 9 Apr 2025 11:40:51 -0700 Subject: [PATCH 152/160] docs: release notes for the v19.2.7 release --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d68764d33eb..9309d7f13eb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ + + +# 19.2.7 (2025-04-09) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | +| [7f1e8c677](https://github.com/angular/angular-cli/commit/7f1e8c6777dbf60e2a3864774a8c4140bb76f640) | fix | include component test metadata in development builds | +| [74cd4edd5](https://github.com/angular/angular-cli/commit/74cd4edd5bbf5ae03a910be036f6e7fa7db35642) | fix | skip normalization of relative externals | + + + # 18.2.18 (2025-04-09) From f669657cebe144530288b0a716c10e3072241237 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 9 Apr 2025 12:39:13 -0700 Subject: [PATCH 153/160] release: cut the v20.0.0-next.5 release --- CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9309d7f13eb2..7ad27b23018d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ + + +# 20.0.0-next.5 (2025-04-09) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------- | +| [fdc6291dd](https://github.com/angular/angular-cli/commit/fdc6291dda4903f418667d415b05367390cf829d) | feat | add update migration to keep previous style guide generation behavior | +| [90615a88b](https://github.com/angular/angular-cli/commit/90615a88b10535d7f0197008b9d48ceac4409c23) | fix | default component templates to not use `.ng.html` extension | +| [5fc595144](https://github.com/angular/angular-cli/commit/5fc5951440c9306c4349fa3f8dbcb1b584441fe8) | fix | generate guards with a dash type separator | +| [040282d8f](https://github.com/angular/angular-cli/commit/040282d8fd5838266785997442c4f5a269666cf3) | fix | generate interceptors with a dash type separator | +| [070d60fb3](https://github.com/angular/angular-cli/commit/070d60fb383bb14d39f969942641253e54980fcf) | fix | generate modules with a dash type separator | +| [e6083b57b](https://github.com/angular/angular-cli/commit/e6083b57bb5b38db14264253095a9729738d22f2) | fix | generate pipes with a dash type separator | +| [92e193c0b](https://github.com/angular/angular-cli/commit/92e193c0b9a2b85b68d83c5f378d30fc8d10f13e) | fix | generate resolvers with a dash type separator | +| [ea1143ddd](https://github.com/angular/angular-cli/commit/ea1143ddd801b775828f0b62788f4cce0dd7e9ce) | fix | infer app component name and path in server schematic | +| [661609e3e](https://github.com/angular/angular-cli/commit/661609e3e583198828baf236338db17b6222f4d8) | fix | set explicit type in library schematic | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------- | +| [3e24a59a9](https://github.com/angular/angular-cli/commit/3e24a59a9db9f11a80fa616c68be4380c4816ed5) | fix | disable TypeScript `composite` option with Angular compiler | +| [6f913ad5e](https://github.com/angular/angular-cli/commit/6f913ad5e4d8ad9932ef2607851e3b8776e1af3a) | fix | include component test metadata in development builds | +| [fc0e05fea](https://github.com/angular/angular-cli/commit/fc0e05fea89598204a7e5de494da897c396c4e52) | fix | skip normalization of relative externals | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------ | +| [319b8e0c2](https://github.com/angular/angular-cli/commit/319b8e0c2a0cd30ab96576464b4172a1f76a97a6) | fix | manage unhandled errors in zoneless applications | + +### @ngtools/webpack + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------- | +| [427bd846f](https://github.com/angular/angular-cli/commit/427bd846f552b393cb969472a05488ac11d47e9f) | fix | disable TypeScript composite option with Angular compiler | + + + # 19.2.7 (2025-04-09) diff --git a/package.json b/package.json index d9680d5060cf..5cffcc6d725e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "20.0.0-next.4", + "version": "20.0.0-next.5", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From b363700a77d4438319bed53c36a4e417fe1b01c4 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 10 Apr 2025 16:03:51 +0000 Subject: [PATCH 154/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 46 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 38 +-- package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 282 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 11 files changed, 228 insertions(+), 228 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index aedcc2ea6532..3c9f88a5c5b6 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + - uses: angular/dev-infra/github-actions/branch-manager@77fb8b4387755a887550b2e5c3fe1206ae130007 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ac411692a3d0..0e7caa6daf36 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -59,11 +59,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,13 +85,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -108,9 +108,9 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 with: allow_windows_rbe: true google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} @@ -134,13 +134,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -158,13 +158,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -178,13 +178,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -214,11 +214,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index ac9d73c39729..a3a4133735ad 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@77fb8b4387755a887550b2e5c3fe1206ae130007 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + - uses: angular/dev-infra/github-actions/post-approval-changes@77fb8b4387755a887550b2e5c3fe1206ae130007 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index dd958b875b54..d6b84812fe2e 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + - uses: angular/dev-infra/github-actions/feature-request@77fb8b4387755a887550b2e5c3fe1206ae130007 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 14a667a376c2..76dd3d48db12 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 9a92f9109037..518d0321e643 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/linting/licenses@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,9 +130,9 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 with: allow_windows_rbe: true - name: Run CLI E2E tests @@ -153,13 +153,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -176,12 +176,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index 5cffcc6d725e..b5b7d2e7b060 100644 --- a/package.json +++ b/package.json @@ -46,20 +46,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "20.0.0-next.5", - "@angular/cdk": "20.0.0-next.5", - "@angular/common": "20.0.0-next.5", - "@angular/compiler": "20.0.0-next.5", - "@angular/compiler-cli": "20.0.0-next.5", - "@angular/core": "20.0.0-next.5", - "@angular/forms": "20.0.0-next.5", - "@angular/localize": "20.0.0-next.5", - "@angular/material": "20.0.0-next.5", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#71904c53ace2c540d3cf1cd6151ac08665f9179e", - "@angular/platform-browser": "20.0.0-next.5", - "@angular/platform-server": "20.0.0-next.5", - "@angular/router": "20.0.0-next.5", - "@angular/service-worker": "20.0.0-next.5", + "@angular/animations": "20.0.0-next.6", + "@angular/cdk": "20.0.0-next.6", + "@angular/common": "20.0.0-next.6", + "@angular/compiler": "20.0.0-next.6", + "@angular/compiler-cli": "20.0.0-next.6", + "@angular/core": "20.0.0-next.6", + "@angular/forms": "20.0.0-next.6", + "@angular/localize": "20.0.0-next.6", + "@angular/material": "20.0.0-next.6", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#78c7e244442d09fad1d880658da3c88f4627b14e", + "@angular/platform-browser": "20.0.0-next.6", + "@angular/platform-server": "20.0.0-next.6", + "@angular/router": "20.0.0-next.6", + "@angular/service-worker": "20.0.0-next.6", "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "8.0.3", "@eslint/compat": "1.2.8", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 37cdb43ae389..7d6ef7962bd6 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "20.0.0-next.5", - "@angular/compiler": "20.0.0-next.5", - "@angular/core": "20.0.0-next.5", - "@angular/platform-browser": "20.0.0-next.5", - "@angular/platform-server": "20.0.0-next.5", - "@angular/router": "20.0.0-next.5", + "@angular/common": "20.0.0-next.6", + "@angular/compiler": "20.0.0-next.6", + "@angular/core": "20.0.0-next.6", + "@angular/platform-browser": "20.0.0-next.6", + "@angular/platform-server": "20.0.0-next.6", + "@angular/router": "20.0.0-next.6", "@schematics/angular": "workspace:*" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 02a88ebc3054..1eb3be473168 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", - "@angular/compiler": "20.0.0-next.5", - "@angular/compiler-cli": "20.0.0-next.5", + "@angular/compiler": "20.0.0-next.6", + "@angular/compiler-cli": "20.0.0-next.6", "typescript": "5.8.3", "webpack": "5.99.5" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 76aac87d8916..451588812102 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,47 +15,47 @@ importers: .: devDependencies: '@angular/animations': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/cdk': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/common': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5 + specifier: 20.0.0-next.6 + version: 20.0.0-next.6 '@angular/compiler-cli': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3) '@angular/core': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/localize': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(@angular/compiler@20.0.0-next.5) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(@angular/compiler@20.0.0-next.6) '@angular/material': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(zed5mlcqqzocvcjadwm7aowd6q) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(hgc3ejd44uohyk77n2ezskte2i) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#71904c53ace2c540d3cf1cd6151ac08665f9179e - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/71904c53ace2c540d3cf1cd6151ac08665f9179e(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#78c7e244442d09fad1d880658da3c88f4627b14e + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/78c7e244442d09fad1d880658da3c88f4627b14e(encoding@0.1.13) '@angular/platform-browser': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-server': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.5)(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.6)(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/router': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.25.0 version: 1.25.0 @@ -428,7 +428,7 @@ importers: version: 4.3.0 ng-packagr: specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) + version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) postcss: specifier: 8.5.3 version: 8.5.3 @@ -509,23 +509,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5 + specifier: 20.0.0-next.6 + version: 20.0.0-next.6 '@angular/core': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-server': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.5)(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.6)(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/router': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -744,7 +744,7 @@ importers: version: 3.0.4 ng-packagr: specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) + version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) undici: specifier: 7.7.0 version: 7.7.0 @@ -838,11 +838,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5 + specifier: 20.0.0-next.6 + version: 20.0.0-next.6 '@angular/compiler-cli': - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -880,118 +880,118 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@20.0.0-next.5': - resolution: {integrity: sha512-Ys3nI47vkOcVCcqAOT8Gozwl/4qpfNXo5EDLw5eKksiKlJTkpJtNu1Ljxk34hJwTTqdYYYOIgHxaJTTf5XdxuQ==} + '@angular/animations@20.0.0-next.6': + resolution: {integrity: sha512-LGbopNGSVzFQGBJn7rl06KJSEAiw5b3vMPYtPYPIuuIvhmAQdtWF0DjYtLjgIs/30eHUR1g8lfAZGNz5Hhd//w==} engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/common': 20.0.0-next.5 - '@angular/core': 20.0.0-next.5 + '@angular/common': 20.0.0-next.6 + '@angular/core': 20.0.0-next.6 - '@angular/cdk@20.0.0-next.5': - resolution: {integrity: sha512-WVegI+c6+631wKRm7+EJA8jrlMYDETrBe0LyXhWJaQ7SXGGTnvnB3vTjrdDDh0kFl3rd42bAFDXB/Mh3jqB/nw==} + '@angular/cdk@20.0.0-next.6': + resolution: {integrity: sha512-ZebqKJ2/EDLG43ExGKclqGgeqdvXrP5s1uJR62g004RINSKuZ2SPEIISWQOp2NlOzvFcjFtMD83FrCwH2EeRaw==} peerDependencies: '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@20.0.0-next.5': - resolution: {integrity: sha512-SzbmSEP/5kiW30qd8S2x9YlMdjNsVUDpb/sjqwa8eOvLaUQf537tLBHx+l38d6mJcM9O1Blg0SA11vL88A/+qg==} + '@angular/common@20.0.0-next.6': + resolution: {integrity: sha512-UjC6pECFbn6xIraXk4LZQ5AfBglr5NTki75oRRIRl88P2XSil9C/6OehqFgyTg8u+loAlLRM4VVZdMxml9CrQQ==} engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/core': 20.0.0-next.5 + '@angular/core': 20.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.0.0-next.5': - resolution: {integrity: sha512-U0RIKvGVitFnMIhpl8M76NS5o3Fe57ppQ5BNGK34z8bQpXZ8MTZprcveIwv37B4+5oBu4W/+p3NdsStlbwXzNw==} + '@angular/compiler-cli@20.0.0-next.6': + resolution: {integrity: sha512-08xYm8JujFJbJmVuXn8bd3FlRbz76AhyH1TlKrCY7Ibf+ANb00ZKGtb4tGrduUbivVQllCQMJB9oY6hFxaOG7w==} engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-next.5 + '@angular/compiler': 20.0.0-next.6 typescript: 5.8.3 - '@angular/compiler@20.0.0-next.5': - resolution: {integrity: sha512-5ZW1A0XJmV8zG+gDxBWEv1b42KY/bb0Bnf5DZ7SsBAJddxoavoC+46A0TzjlxWwI77z46NsnEODf268XJacpjg==} + '@angular/compiler@20.0.0-next.6': + resolution: {integrity: sha512-7U/zgfQJteiE/jT8T2V0TcD55mippxfAZBZmMVPhMog9cYiX79VBBFLVJ+K8iIDlPDaMD/j/1JeotkppEf+VJg==} engines: {node: ^20.11.1 || >=22.11.0} - '@angular/core@20.0.0-next.5': - resolution: {integrity: sha512-xZ25MXR3ifoxX1RmV2G8DUU9k6V5wWC6WH+WtWR96W6Q1mW1pEt+XAI9NI6+szEFqTErlOTifGkiv1h+Nda8cQ==} + '@angular/core@20.0.0-next.6': + resolution: {integrity: sha512-+r2pS0b3OKqQVRElfApcCfP9G4ArQ9LoYYvkHGZlPmIoNpvn8f23EovjfvKFZHIyRVVVW7OhbosWn6eHLZ2Ojw==} engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/compiler': 20.0.0-next.5 + '@angular/compiler': 20.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: '@angular/compiler': optional: true - '@angular/forms@20.0.0-next.5': - resolution: {integrity: sha512-zJ8puD5KWakFvk5LQ/FBz5jNvUATDtIuFZo48R80P2hkEbJgAY/rT+BhNFehyuQBEvXBFNsDjq9xWmQQwIj4zA==} + '@angular/forms@20.0.0-next.6': + resolution: {integrity: sha512-Nctrbg1OHJfGjYgZ7Gbqz/+WddVXtNmbA8DM7UR0plE1R5R1KxDudhLn/KWVVw7KH8KqJ9vnZZjOWMoTOxOTeQ==} engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/common': 20.0.0-next.5 - '@angular/core': 20.0.0-next.5 - '@angular/platform-browser': 20.0.0-next.5 + '@angular/common': 20.0.0-next.6 + '@angular/core': 20.0.0-next.6 + '@angular/platform-browser': 20.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@20.0.0-next.5': - resolution: {integrity: sha512-p6ccYeM3a/ACR150arcjyX0hcELZ94Ta8gZvXyU/p7f0S6kew8RyhEsAFhF3BwG5XMDD8ITtnbQoI5aGPC+zTg==} + '@angular/localize@20.0.0-next.6': + resolution: {integrity: sha512-9/IKzxDKL7eDsyO6mQM5t+E7/htHYarBXboxhG9ka9A6NSXdBZgg+Lxwu6auRz8XfLKTQoszwhjMmVICJR2LjQ==} engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-next.5 - '@angular/compiler-cli': 20.0.0-next.5 + '@angular/compiler': 20.0.0-next.6 + '@angular/compiler-cli': 20.0.0-next.6 - '@angular/material@20.0.0-next.5': - resolution: {integrity: sha512-0Ey7PvoPO6KWpEiBuOB4ij3J/X3vjZOAr9g65QppsnRpjcKLR3DyR3JgGOhOEoiIrK7rUENGY1HjhZ5vXSJbbw==} + '@angular/material@20.0.0-next.6': + resolution: {integrity: sha512-VibAU/+mX1ds7RjS18fLJHmF8ZpsFUgA8KA7pcvD42pHONsIl2HkXI6/ApE5sp4h4XXQbRVqyy2fri8WU5J44w==} peerDependencies: - '@angular/cdk': 20.0.0-next.5 + '@angular/cdk': 20.0.0-next.6 '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/forms': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/71904c53ace2c540d3cf1cd6151ac08665f9179e': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/71904c53ace2c540d3cf1cd6151ac08665f9179e} - version: 0.0.0-b45dfa77df2021b23eeda5928ca6cd8bb89b21e7 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/78c7e244442d09fad1d880658da3c88f4627b14e': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/78c7e244442d09fad1d880658da3c88f4627b14e} + version: 0.0.0-77fb8b4387755a887550b2e5c3fe1206ae130007 hasBin: true - '@angular/platform-browser@20.0.0-next.5': - resolution: {integrity: sha512-SGIWQbOp/BIxJKMlNhA0qKm/uG4vX9CpCW1SgRVN2ly9MFlyVUsVYrJK83E9vfUH8rxO7IRQu5OmPDGGHfcxnA==} + '@angular/platform-browser@20.0.0-next.6': + resolution: {integrity: sha512-ehNgRzAVUHINC1qJ6mduHQe8Br/v9SQ+WY+PYs5kmjWNTSuAVddC6FNIG+2BFv/Gu/3q/Nh9s8trwsKRUzf9vg==} engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/animations': 20.0.0-next.5 - '@angular/common': 20.0.0-next.5 - '@angular/core': 20.0.0-next.5 + '@angular/animations': 20.0.0-next.6 + '@angular/common': 20.0.0-next.6 + '@angular/core': 20.0.0-next.6 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@20.0.0-next.5': - resolution: {integrity: sha512-s0ssRKN8Oe2tY/rwcXZhtOxO4CGoJ7agBLVYiwCWEbf/jQMs2OZ9oZaebySFmSgvn1DnmkGAiNcLtxYNHW1ZDg==} + '@angular/platform-server@20.0.0-next.6': + resolution: {integrity: sha512-wUbtkjpQ50sU8q8+BN0BLZotNzJwT3pxMfzPX03eJnBiF/oNEJEF+KiXLFTUIUAcq62Iyge65qJkBX6Ia2bRcg==} engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/common': 20.0.0-next.5 - '@angular/compiler': 20.0.0-next.5 - '@angular/core': 20.0.0-next.5 - '@angular/platform-browser': 20.0.0-next.5 + '@angular/common': 20.0.0-next.6 + '@angular/compiler': 20.0.0-next.6 + '@angular/core': 20.0.0-next.6 + '@angular/platform-browser': 20.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@20.0.0-next.5': - resolution: {integrity: sha512-MmdLZNPSY3VFN97K8LlQsHbcYLLPF3YhRnNdzGZcxJ0WkMbAB8V4o/udTctGAtSWjtJZJtNa3pCjLGw28D2W5Q==} + '@angular/router@20.0.0-next.6': + resolution: {integrity: sha512-Rz+w2D6ejiIqRJUuMXBmKPRFbkU4ukE8W+d/1XaehpJO3ijfNQwUyfcI506i2Y9BWHLqPm2u+byH61LgSm5Mfg==} engines: {node: ^20.11.1 || >=22.11.0} peerDependencies: - '@angular/common': 20.0.0-next.5 - '@angular/core': 20.0.0-next.5 - '@angular/platform-browser': 20.0.0-next.5 + '@angular/common': 20.0.0-next.6 + '@angular/core': 20.0.0-next.6 + '@angular/platform-browser': 20.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@20.0.0-next.5': - resolution: {integrity: sha512-wuSEDeCO/keoS0sxcW5HFOcfcZAWk02TJLp8WRGGm5MejKj/cY0gSl4gBTGqEvZ6uEkZkj1M67dNFB0NxWkhXA==} + '@angular/service-worker@20.0.0-next.6': + resolution: {integrity: sha512-q8cFU8iC4KZZpGQ3TZAwFULyHh8kwaJr+4Z+WQA/ZTo3oLM4KwcWZIHXRGmFW5+ovddvrpYSitFA8JmKp0t6Zg==} engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: - '@angular/core': 20.0.0-next.5 + '@angular/core': 20.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 '@babel/code-frame@7.26.2': @@ -7974,29 +7974,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/cdk@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/cdk@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) parse5: 7.2.1 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3)': + '@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3)': dependencies: - '@angular/compiler': 20.0.0-next.5 + '@angular/compiler': 20.0.0-next.6 '@babel/core': 7.26.10 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 @@ -8009,30 +8009,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.0.0-next.5': + '@angular/compiler@20.0.0-next.6': dependencies: tslib: 2.8.1 - '@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)': + '@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 zone.js: 0.15.0 optionalDependencies: - '@angular/compiler': 20.0.0-next.5 + '@angular/compiler': 20.0.0-next.6 - '@angular/forms@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/forms@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(@angular/compiler@20.0.0-next.5)': + '@angular/localize@20.0.0-next.6(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(@angular/compiler@20.0.0-next.6)': dependencies: - '@angular/compiler': 20.0.0-next.5 - '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) + '@angular/compiler': 20.0.0-next.6 + '@angular/compiler-cli': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3) '@babel/core': 7.26.10 '@types/babel__core': 7.20.5 tinyglobby: 0.2.12 @@ -8040,17 +8040,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@20.0.0-next.5(zed5mlcqqzocvcjadwm7aowd6q)': + '@angular/material@20.0.0-next.6(hgc3ejd44uohyk77n2ezskte2i)': dependencies: - '@angular/cdk': 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/forms': 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) - '@angular/platform-browser': 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/cdk': 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/common': 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/forms': 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + '@angular/platform-browser': 20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/71904c53ace2c540d3cf1cd6151ac08665f9179e(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/78c7e244442d09fad1d880658da3c88f4627b14e(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 @@ -8067,35 +8067,35 @@ snapshots: transitivePeerDependencies: - encoding - '@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/animations': 20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/platform-server@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.5)(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/platform-server@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@20.0.0-next.6)(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/compiler': 20.0.0-next.5 - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/compiler': 20.0.0-next.6 + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/router@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-next.5(@angular/animations@20.0.0-next.5(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@20.0.0-next.5(@angular/core@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/service-worker@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -13768,10 +13768,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3): + ng-packagr@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 20.0.0-next.5(@angular/compiler@20.0.0-next.5)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3) '@rollup/plugin-json': 6.1.0(rollup@4.39.0) '@rollup/wasm-node': 4.39.0 ajv: 8.17.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 878fdb7ca8af..1800e1d61170 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#e2717dcb5b3c553f463043bce6d18ff7a437485a", - "@angular/cdk": "github:angular/cdk-builds#3949f269ae6b0dffd65beac126ed1451be8dabcb", - "@angular/common": "github:angular/common-builds#007769e1e45fc9a072ed6c2fe9619adbdbe88afa", - "@angular/compiler": "github:angular/compiler-builds#86ebca3b6857c90fa7f9193c61b9145133b55ca0", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#84c4a33fd56594d9e3343ffff1b00efa8576d997", - "@angular/core": "github:angular/core-builds#3b9c1bf0dc876dc42bb2c1f87c79ab9defff88e7", - "@angular/forms": "github:angular/forms-builds#998f5dde4e0f3be77a70a043a7a31e4878573410", - "@angular/language-service": "github:angular/language-service-builds#d3f1e6f0d5ba68ab20446af009307539fb4d31ef", - "@angular/localize": "github:angular/localize-builds#1992d88856f4ba32382bb27530987b9793ef4649", - "@angular/material": "github:angular/material-builds#56b58aea08c4b93f3f2c15853d48c6f86523f897", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a87bedc767855410cc0be27b31005f8c03655463", - "@angular/platform-browser": "github:angular/platform-browser-builds#530d2065d254fe695cddc24a3dcd3b1faed2e551", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#5a280908316a1cbf5b993db3fd00a11f4633c1db", - "@angular/platform-server": "github:angular/platform-server-builds#569fb8f99de02748e57a24a4600015225d05b50d", - "@angular/router": "github:angular/router-builds#24abf7c68a380620734103c9b1b89197c966d9d5", - "@angular/service-worker": "github:angular/service-worker-builds#0869deac34df17466faf02641331fd5c6572d5bf" + "@angular/animations": "github:angular/animations-builds#207e34556f8e7712aae5a2f2920ac84e6a00a676", + "@angular/cdk": "github:angular/cdk-builds#227624156f41dc604ad7a2d9d3b4f834168bf03c", + "@angular/common": "github:angular/common-builds#a02eaba4a6ca032091eb3e4f190a6652a88f2593", + "@angular/compiler": "github:angular/compiler-builds#850d629a70bd7fc76dfeadd8aa8601251f36dca6", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#e139b08231672416f156b1b78de339abfce6b8fd", + "@angular/core": "github:angular/core-builds#59185452c0c77bf180bd418345eb4e50104b8e2f", + "@angular/forms": "github:angular/forms-builds#667eb709aaee1954cb5ece166a6ecee9d58eb51b", + "@angular/language-service": "github:angular/language-service-builds#f8df72fb2df9c7aae44a051a42d9c3f85eec100f", + "@angular/localize": "github:angular/localize-builds#1d47a5875d710faf34d3a2466f6297a93a359457", + "@angular/material": "github:angular/material-builds#350a3a2a2cee018c667542ee7782ddd5f7b676db", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f77c7457c9f7327decbe17cb4fc7af4fce969b1f", + "@angular/platform-browser": "github:angular/platform-browser-builds#9404712af919f57aae477c5e5cee2962e8b83362", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#7187006801117c82b3c486dbe790f2baebcfddd8", + "@angular/platform-server": "github:angular/platform-server-builds#f6a80756f9cc842dac8472c959928bd081e83cfb", + "@angular/router": "github:angular/router-builds#f5069d971b0ebd4cc5bd0165f4a9e0b526230047", + "@angular/service-worker": "github:angular/service-worker-builds#8b30b5d10610a26e6d10170da80be0085578b1d2" } } From 419780226ce1c61559b288cc9472415e48b2183c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 10 Apr 2025 14:04:30 +0000 Subject: [PATCH 155/160] build: update devinfra digest to 77fb8b4 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index a6bfaf0552c3..591da048234f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "b45dfa77df2021b23eeda5928ca6cd8bb89b21e7", + commit = "77fb8b4387755a887550b2e5c3fe1206ae130007", remote = "https://github.com/angular/dev-infra.git", ) From 6e6315d72686a88f29ec9e7565b463e302fdbed8 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 8 Apr 2025 07:03:01 +0000 Subject: [PATCH 156/160] fix(@angular/build): properly resolve transitive external dependencies in vite-dev-server This fix ensures that transitive external dependencies are correctly recognized and excluded during development builds with the Vite dev server. Previously, some dependencies were mistakenly bundled. Closes #30048 --- .../angular/build/src/builders/dev-server/vite-server.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/builders/dev-server/vite-server.ts b/packages/angular/build/src/builders/dev-server/vite-server.ts index b0ad41bbdb1b..dfe8035acde0 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -347,8 +347,9 @@ export async function* serveWithVite( externalMetadata.implicitServer.length = 0; externalMetadata.implicitBrowser.length = 0; - externalMetadata.explicitBrowser.push(...explicit); - externalMetadata.explicitServer.push(...explicit, ...builtinModules); + const externalDeps = browserOptions.externalDependencies ?? []; + externalMetadata.explicitBrowser.push(...explicit, ...externalDeps); + externalMetadata.explicitServer.push(...explicit, ...externalDeps, ...builtinModules); externalMetadata.implicitServer.push(...implicitServerFiltered); externalMetadata.implicitBrowser.push(...implicitBrowserFiltered); From d82fbbba8fd31d4e3ef21677db1114266432eff7 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 10 Apr 2025 17:04:32 +0000 Subject: [PATCH 157/160] build: update all non-major dependencies --- package.json | 10 +- packages/angular/build/package.json | 6 +- packages/angular/cli/package.json | 4 +- .../angular_devkit/build_angular/package.json | 8 +- pnpm-lock.yaml | 134 ++++++++---------- 5 files changed, 77 insertions(+), 85 deletions(-) diff --git a/package.json b/package.json index b5b7d2e7b060..13f77c143b33 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@angular/platform-server": "20.0.0-next.6", "@angular/router": "20.0.0-next.6", "@angular/service-worker": "20.0.0-next.6", - "@bazel/bazelisk": "1.25.0", + "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.0.3", "@eslint/compat": "1.2.8", "@eslint/eslintrc": "3.3.1", @@ -103,14 +103,14 @@ "esbuild": "0.25.2", "esbuild-wasm": "0.25.2", "eslint": "9.24.0", - "eslint-config-prettier": "10.1.1", + "eslint-config-prettier": "10.1.2", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.31.0", "express": "5.1.0", "fast-glob": "3.3.3", "globals": "16.0.0", "http-proxy": "^1.18.1", - "http-proxy-middleware": "3.0.3", + "http-proxy-middleware": "3.0.5", "husky": "9.1.7", "jasmine": "~5.6.0", "jasmine-core": "~5.6.0", @@ -122,7 +122,7 @@ "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "karma-source-map-support": "1.4.0", - "listr2": "8.2.5", + "listr2": "8.3.2", "lodash": "^4.17.21", "npm": "^11.0.0", "prettier": "^3.0.0", @@ -138,7 +138,7 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.8.3", - "undici": "7.7.0", + "undici": "7.8.0", "unenv": "^1.10.0", "verdaccio": "6.1.2", "verdaccio-auth-memory": "^10.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index ef8908649d10..245afd5f968c 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -31,7 +31,7 @@ "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", - "listr2": "8.2.5", + "listr2": "8.3.2", "magic-string": "0.30.17", "mrmime": "2.0.1", "parse5-html-rewriting-stream": "7.0.0", @@ -42,7 +42,7 @@ "semver": "7.7.1", "source-map-support": "0.5.21", "tinyglobby": "0.2.12", - "vite": "6.2.5", + "vite": "6.2.6", "watchpack": "2.4.2" }, "optionalDependencies": { @@ -52,7 +52,7 @@ "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", "less": "4.3.0", - "ng-packagr": "20.0.0-next.5", + "ng-packagr": "20.0.0-next.6", "postcss": "8.5.3", "rxjs": "7.8.2" }, diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 805c07ae4bf7..daa734d47ada 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -26,12 +26,12 @@ "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.4.1", - "@listr2/prompt-adapter-inquirer": "2.0.18", + "@listr2/prompt-adapter-inquirer": "2.0.21", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "ini": "5.0.0", "jsonc-parser": "3.3.1", - "listr2": "8.2.5", + "listr2": "8.3.2", "npm-package-arg": "12.0.2", "npm-pick-manifest": "10.0.0", "pacote": "20.0.0", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 1d4201e95a28..009dae06a052 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -31,7 +31,7 @@ "css-loader": "7.1.2", "esbuild-wasm": "0.25.2", "fast-glob": "3.3.3", - "http-proxy-middleware": "3.0.3", + "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", @@ -67,10 +67,10 @@ }, "devDependencies": { "@angular/ssr": "workspace:*", - "@web/test-runner": "0.20.0", + "@web/test-runner": "0.20.1", "browser-sync": "3.0.4", - "ng-packagr": "20.0.0-next.5", - "undici": "7.7.0" + "ng-packagr": "20.0.0-next.6", + "undici": "7.8.0" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 451588812102..8806f7a2f5bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,8 +57,8 @@ importers: specifier: 20.0.0-next.6 version: 20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@bazel/bazelisk': - specifier: 1.25.0 - version: 1.25.0 + specifier: 1.26.0 + version: 1.26.0 '@bazel/buildifier': specifier: 8.0.3 version: 8.0.3 @@ -186,8 +186,8 @@ importers: specifier: 9.24.0 version: 9.24.0(jiti@1.21.7) eslint-config-prettier: - specifier: 10.1.1 - version: 10.1.1(eslint@9.24.0(jiti@1.21.7)) + specifier: 10.1.2 + version: 10.1.2(eslint@9.24.0(jiti@1.21.7)) eslint-plugin-header: specifier: 3.1.1 version: 3.1.1(eslint@9.24.0(jiti@1.21.7)) @@ -207,8 +207,8 @@ importers: specifier: ^1.18.1 version: 1.18.1(debug@4.4.0) http-proxy-middleware: - specifier: 3.0.3 - version: 3.0.3 + specifier: 3.0.5 + version: 3.0.5 husky: specifier: 9.1.7 version: 9.1.7 @@ -243,8 +243,8 @@ importers: specifier: 1.4.0 version: 1.4.0 listr2: - specifier: 8.2.5 - version: 8.2.5 + specifier: 8.3.2 + version: 8.3.2 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -291,8 +291,8 @@ importers: specifier: 5.8.3 version: 5.8.3 undici: - specifier: 7.7.0 - version: 7.7.0 + specifier: 7.8.0 + version: 7.8.0 unenv: specifier: ^1.10.0 version: 1.10.0 @@ -354,7 +354,7 @@ importers: version: 5.1.9(@types/node@20.17.30) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) beasties: specifier: 0.3.2 version: 0.3.2 @@ -374,8 +374,8 @@ importers: specifier: 3.3.1 version: 3.3.1 listr2: - specifier: 8.2.5 - version: 8.2.5 + specifier: 8.3.2 + version: 8.3.2 magic-string: specifier: 0.30.17 version: 0.30.17 @@ -407,8 +407,8 @@ importers: specifier: 0.2.12 version: 0.2.12 vite: - specifier: 6.2.5 - version: 6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) + specifier: 6.2.6 + version: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -427,8 +427,8 @@ importers: specifier: 4.3.0 version: 4.3.0 ng-packagr: - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) postcss: specifier: 8.5.3 version: 8.5.3 @@ -451,8 +451,8 @@ importers: specifier: 7.4.1 version: 7.4.1(@types/node@20.17.30) '@listr2/prompt-adapter-inquirer': - specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.4.1(@types/node@20.17.30)) + specifier: 2.0.21 + version: 2.0.21(@inquirer/prompts@7.4.1(@types/node@20.17.30)) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -466,8 +466,8 @@ importers: specifier: 3.3.1 version: 3.3.1 listr2: - specifier: 8.2.5 - version: 8.2.5 + specifier: 8.3.2 + version: 8.3.2 npm-package-arg: specifier: 12.0.2 version: 12.0.2 @@ -613,7 +613,7 @@ importers: version: link:../../ngtools/webpack '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) + version: 2.0.0(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -639,8 +639,8 @@ importers: specifier: 3.3.3 version: 3.3.3 http-proxy-middleware: - specifier: 3.0.3 - version: 3.0.3 + specifier: 3.0.5 + version: 3.0.5 istanbul-lib-instrument: specifier: 6.0.3 version: 6.0.3 @@ -737,17 +737,17 @@ importers: specifier: workspace:* version: link:../../angular/ssr '@web/test-runner': - specifier: 0.20.0 - version: 0.20.0 + specifier: 0.20.1 + version: 0.20.1 browser-sync: specifier: 3.0.4 version: 3.0.4 ng-packagr: - specifier: 20.0.0-next.5 - version: 20.0.0-next.5(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) + specifier: 20.0.0-next.6 + version: 20.0.0-next.6(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) undici: - specifier: 7.7.0 - version: 7.7.0 + specifier: 7.8.0 + version: 7.8.0 packages/angular_devkit/build_webpack: dependencies: @@ -1489,8 +1489,8 @@ packages: resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} - '@bazel/bazelisk@1.25.0': - resolution: {integrity: sha512-IgesSUh9EwwLI9+Vs5rb/sx7vh6cI97CRLPqw9+/egFzeZlB5S2fTsKwbdDxtTVPjQMGS3GY64tTNsgejVFeKg==} + '@bazel/bazelisk@1.26.0': + resolution: {integrity: sha512-bTNcHdGyEQ9r7SczEYUa0gkEQhJo1ld2BjXI8fWBvsUeoHi03QpUs2HZgDbjjrpQFQqG2ZbO7ihZvH8MjhUTHw==} hasBin: true '@bazel/buildifier@8.0.3': @@ -1954,8 +1954,8 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@listr2/prompt-adapter-inquirer@2.0.18': - resolution: {integrity: sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==} + '@listr2/prompt-adapter-inquirer@2.0.21': + resolution: {integrity: sha512-can62OlOPusZwYfKfd0SV6znsSFbiuJw/lvvRSAAdzqUCTE/Vn8FydLGAfEvGbDALdfqvazSj6tnVJKQxj9iXw==} engines: {node: '>=18.0.0'} peerDependencies: '@inquirer/prompts': '>= 3 < 8' @@ -3049,8 +3049,8 @@ packages: resolution: {integrity: sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==} engines: {node: '>=18.0.0'} - '@web/test-runner-chrome@0.18.0': - resolution: {integrity: sha512-EkB70HtHwY36pIbgn9HzqtKAv+i53qa0/UBrs+H0m8j24TxIEH9oWIdF9O/RFxjYpla7fIvZMhOFOjejgrRU5g==} + '@web/test-runner-chrome@0.18.1': + resolution: {integrity: sha512-eO6ctCaqSguGM6G3cFobGHnrEs9wlv9Juj/Akyr4XLjeEMTheNULdvOXw9Bygi+QC/ir/0snMmt+/YKnfy8rYA==} engines: {node: '>=18.0.0'} '@web/test-runner-commands@0.9.0': @@ -3069,8 +3069,8 @@ packages: resolution: {integrity: sha512-ZL9F6FXd0DBQvo/h/+mSfzFTSRVxzV9st/AHhpgABtUtV/AIpVE9to6+xdkpu6827kwjezdpuadPfg+PlrBWqQ==} engines: {node: '>=18.0.0'} - '@web/test-runner@0.20.0': - resolution: {integrity: sha512-xN+4wgEm5xh0VSiC08eUYXW0QDt/NuzZyey4s7Nnjyjs9NkuJHd1jG9aNzfgL1edpJJ/RldHc0KiM2to1h2kxQ==} + '@web/test-runner@0.20.1': + resolution: {integrity: sha512-MTN8D1WCeCdkUWJIeG9yauUbRkk9g0zGFnBbI5smtPE91NpXFMfRd8nShIvxQnHx9fNTmK+OCYKnOSlq5DLLVA==} engines: {node: '>=18.0.0'} hasBin: true @@ -3341,9 +3341,6 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - async-mutex@0.4.0: - resolution: {integrity: sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==} - async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} @@ -4293,8 +4290,8 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-config-prettier@10.1.1: - resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==} + eslint-config-prettier@10.1.2: + resolution: {integrity: sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -4885,8 +4882,8 @@ packages: '@types/express': optional: true - http-proxy-middleware@3.0.3: - resolution: {integrity: sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==} + http-proxy-middleware@3.0.5: + resolution: {integrity: sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} http-proxy@1.18.1: @@ -5558,8 +5555,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listr2@8.2.5: - resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + listr2@8.3.2: + resolution: {integrity: sha512-vsBzcU4oE+v0lj4FhVLzr9dBTv4/fHIa57l+GCwovP8MoFNZJTOhGU8PXd4v2VJCbECAaijBiHntiekFMLvo0g==} engines: {node: '>=18.0.0'} lmdb@3.2.6: @@ -5920,8 +5917,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@20.0.0-next.5: - resolution: {integrity: sha512-fWG2bU6NupYTDxlB2rklvKfdso/hZq/UH5iU8HncZ9yzRvDUQmUIBg2NvBI72ZX1Jg0+/d65OyVns23l/38rnw==} + ng-packagr@20.0.0-next.6: + resolution: {integrity: sha512-naul5aMAJRla4Mj40bc9ku7FyJu6cZyl+/2D+U8FukorRdwjf2Db4C3RMtjtkKNIBEfHmADOyJmvuevQnxiTKQ==} engines: {node: ^20.11.1 || >=22.11.0} hasBin: true peerDependencies: @@ -7494,8 +7491,8 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici@7.7.0: - resolution: {integrity: sha512-tZ6+5NBq4KH35rr46XJ2JPFKxfcBlYNaqLF/wyWIO9RMHqqU/gx/CLB1Y2qMcgB8lWw/bKHa7qzspqCN7mUHvA==} + undici@7.8.0: + resolution: {integrity: sha512-vFv1GA99b7eKO1HG/4RPu2Is3FBTWBrmzqzO0mz+rLxN3yXkE4mqRcb8g8fHxzX4blEysrNZLqg5RbJLqX5buA==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -7620,8 +7617,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@6.2.5: - resolution: {integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==} + vite@6.2.6: + resolution: {integrity: sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -8754,7 +8751,7 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@bazel/bazelisk@1.25.0': {} + '@bazel/bazelisk@1.26.0': {} '@bazel/buildifier@8.0.3': {} @@ -9183,7 +9180,7 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.4.1(@types/node@20.17.30))': + '@listr2/prompt-adapter-inquirer@2.0.21(@inquirer/prompts@7.4.1(@types/node@20.17.30))': dependencies: '@inquirer/prompts': 7.4.1(@types/node@20.17.30) '@inquirer/type': 1.5.5 @@ -10346,9 +10343,9 @@ snapshots: minimatch: 7.4.6 semver: 7.7.1 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': dependencies: - vite: 6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) '@web/browser-logs@0.4.1': dependencies: @@ -10420,11 +10417,10 @@ snapshots: '@types/parse5': 6.0.3 parse5: 6.0.1 - '@web/test-runner-chrome@0.18.0': + '@web/test-runner-chrome@0.18.1': dependencies: '@web/test-runner-core': 0.13.4 '@web/test-runner-coverage-v8': 0.8.0 - async-mutex: 0.4.0 chrome-launcher: 0.15.2 puppeteer-core: 24.6.0 transitivePeerDependencies: @@ -10495,12 +10491,12 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner@0.20.0': + '@web/test-runner@0.20.1': dependencies: '@web/browser-logs': 0.4.1 '@web/config-loader': 0.3.3 '@web/dev-server': 0.4.6 - '@web/test-runner-chrome': 0.18.0 + '@web/test-runner-chrome': 0.18.1 '@web/test-runner-commands': 0.9.0 '@web/test-runner-core': 0.13.4 '@web/test-runner-mocha': 0.9.0 @@ -10799,10 +10795,6 @@ snapshots: async-function@1.0.0: {} - async-mutex@0.4.0: - dependencies: - tslib: 2.8.1 - async@2.6.4: dependencies: lodash: 4.17.21 @@ -11902,7 +11894,7 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.1(eslint@9.24.0(jiti@1.21.7)): + eslint-config-prettier@10.1.2(eslint@9.24.0(jiti@1.21.7)): dependencies: eslint: 9.24.0(jiti@1.21.7) @@ -12698,7 +12690,7 @@ snapshots: transitivePeerDependencies: - debug - http-proxy-middleware@3.0.3: + http-proxy-middleware@3.0.5: dependencies: '@types/http-proxy': 1.17.16 debug: 4.4.0(supports-color@10.0.0) @@ -13424,7 +13416,7 @@ snapshots: lines-and-columns@1.2.4: {} - listr2@8.2.5: + listr2@8.3.2: dependencies: cli-truncate: 4.0.0 colorette: 2.0.20 @@ -13768,7 +13760,7 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.0.0-next.5(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3): + ng-packagr@20.0.0-next.6(@angular/compiler-cli@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3): dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 20.0.0-next.6(@angular/compiler@20.0.0-next.6)(typescript@5.8.3) @@ -15618,7 +15610,7 @@ snapshots: undici-types@6.19.8: {} - undici@7.7.0: {} + undici@7.8.0: {} unenv@1.10.0: dependencies: @@ -15778,7 +15770,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@6.2.5(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1): + vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 From eaa36c368e41536e0784c797293ce09f3bbdce20 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 11 Apr 2025 11:02:45 +0000 Subject: [PATCH 158/160] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 46 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 38 +++++++-------- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------- 9 files changed, 72 insertions(+), 72 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 3c9f88a5c5b6..a10adef61466 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@77fb8b4387755a887550b2e5c3fe1206ae130007 + - uses: angular/dev-infra/github-actions/branch-manager@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e7caa6daf36..62e919c4415d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -59,11 +59,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,13 +85,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -108,9 +108,9 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: allow_windows_rbe: true google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} @@ -134,13 +134,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -158,13 +158,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -178,13 +178,13 @@ jobs: SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -214,11 +214,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index a3a4133735ad..87227f1d067e 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@77fb8b4387755a887550b2e5c3fe1206ae130007 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@77fb8b4387755a887550b2e5c3fe1206ae130007 + - uses: angular/dev-infra/github-actions/post-approval-changes@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index d6b84812fe2e..5180b3d6228f 100644 --- a/.github/workflows/feature-requests.yml +++ b/.github/workflows/feature-requests.yml @@ -16,6 +16,6 @@ jobs: if: github.repository == 'angular/angular-cli' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/feature-request@77fb8b4387755a887550b2e5c3fe1206ae130007 + - uses: angular/dev-infra/github-actions/feature-request@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 76dd3d48db12..ae46d59b8503 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -23,7 +23,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -38,9 +38,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 518d0321e643..2f45efb2aadb 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/linting/licenses@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -91,11 +91,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,9 +130,9 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c with: allow_windows_rbe: true - name: Run CLI E2E tests @@ -153,13 +153,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -176,12 +176,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/setup@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@77fb8b4387755a887550b2e5c3fe1206ae130007 + uses: angular/dev-infra/github-actions/bazel/configure-remote@77b20173e6aee60aa43dd47cab8f2c3933651a1c - name: Run CLI E2E tests run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index 13f77c143b33..54d211a1dcd0 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "20.0.0-next.6", "@angular/localize": "20.0.0-next.6", "@angular/material": "20.0.0-next.6", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#78c7e244442d09fad1d880658da3c88f4627b14e", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ae9fb7555f2c12b329a2dd1212518134d6a13edf", "@angular/platform-browser": "20.0.0-next.6", "@angular/platform-server": "20.0.0-next.6", "@angular/router": "20.0.0-next.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8806f7a2f5bf..49c33184accb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: 20.0.0-next.6 version: 20.0.0-next.6(hgc3ejd44uohyk77n2ezskte2i) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#78c7e244442d09fad1d880658da3c88f4627b14e - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/78c7e244442d09fad1d880658da3c88f4627b14e(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#ae9fb7555f2c12b329a2dd1212518134d6a13edf + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ae9fb7555f2c12b329a2dd1212518134d6a13edf(encoding@0.1.13) '@angular/platform-browser': specifier: 20.0.0-next.6 version: 20.0.0-next.6(@angular/animations@20.0.0-next.6(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-next.6(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-next.6(@angular/compiler@20.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.0)) @@ -951,9 +951,9 @@ packages: '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/78c7e244442d09fad1d880658da3c88f4627b14e': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/78c7e244442d09fad1d880658da3c88f4627b14e} - version: 0.0.0-77fb8b4387755a887550b2e5c3fe1206ae130007 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ae9fb7555f2c12b329a2dd1212518134d6a13edf': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ae9fb7555f2c12b329a2dd1212518134d6a13edf} + version: 0.0.0-77b20173e6aee60aa43dd47cab8f2c3933651a1c hasBin: true '@angular/platform-browser@20.0.0-next.6': @@ -8047,7 +8047,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/78c7e244442d09fad1d880658da3c88f4627b14e(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ae9fb7555f2c12b329a2dd1212518134d6a13edf(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.19.1(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 1800e1d61170..20e34fb067a6 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#207e34556f8e7712aae5a2f2920ac84e6a00a676", - "@angular/cdk": "github:angular/cdk-builds#227624156f41dc604ad7a2d9d3b4f834168bf03c", - "@angular/common": "github:angular/common-builds#a02eaba4a6ca032091eb3e4f190a6652a88f2593", - "@angular/compiler": "github:angular/compiler-builds#850d629a70bd7fc76dfeadd8aa8601251f36dca6", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#e139b08231672416f156b1b78de339abfce6b8fd", - "@angular/core": "github:angular/core-builds#59185452c0c77bf180bd418345eb4e50104b8e2f", - "@angular/forms": "github:angular/forms-builds#667eb709aaee1954cb5ece166a6ecee9d58eb51b", - "@angular/language-service": "github:angular/language-service-builds#f8df72fb2df9c7aae44a051a42d9c3f85eec100f", - "@angular/localize": "github:angular/localize-builds#1d47a5875d710faf34d3a2466f6297a93a359457", - "@angular/material": "github:angular/material-builds#350a3a2a2cee018c667542ee7782ddd5f7b676db", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f77c7457c9f7327decbe17cb4fc7af4fce969b1f", - "@angular/platform-browser": "github:angular/platform-browser-builds#9404712af919f57aae477c5e5cee2962e8b83362", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#7187006801117c82b3c486dbe790f2baebcfddd8", - "@angular/platform-server": "github:angular/platform-server-builds#f6a80756f9cc842dac8472c959928bd081e83cfb", - "@angular/router": "github:angular/router-builds#f5069d971b0ebd4cc5bd0165f4a9e0b526230047", - "@angular/service-worker": "github:angular/service-worker-builds#8b30b5d10610a26e6d10170da80be0085578b1d2" + "@angular/animations": "github:angular/animations-builds#050cc75d151a0d49c94eb4d95a5a3b5616358a64", + "@angular/cdk": "github:angular/cdk-builds#8c02ea809c26394870eb892f15fd6f27c4748372", + "@angular/common": "github:angular/common-builds#cabc6109e225104b1371ee9ce101c2fe88ac9d49", + "@angular/compiler": "github:angular/compiler-builds#b79382b675e6f40ae28155e01f7d148ebf2384c8", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#9ccde912b0528c2f6fcbd31af75bc32da82ff72a", + "@angular/core": "github:angular/core-builds#ea3e2a1f9ec95cbe878f74335785ac5285be60d7", + "@angular/forms": "github:angular/forms-builds#a436db0bfc875dd73ad708d120ff4d63995b80a6", + "@angular/language-service": "github:angular/language-service-builds#bda8f1f58276510b6db58204a1df3bffd6b971b9", + "@angular/localize": "github:angular/localize-builds#8cc16c610577512717aba524a875539bf291517d", + "@angular/material": "github:angular/material-builds#d9e2d58ed042f99d6fc7e5e27698d9b75805a51b", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#65de3eb1bb3e2b57ec88a367d729b2188c63e579", + "@angular/platform-browser": "github:angular/platform-browser-builds#cf84d803f1d35c9addc72068dfedd011af160f7c", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#3628aa9bb4c28a739b5d8cf4c008d60fd97c1d69", + "@angular/platform-server": "github:angular/platform-server-builds#3c4fc58ab151ac0188826e96c759ea8cee20a20c", + "@angular/router": "github:angular/router-builds#a2aaac2046235658ba49b9f351f5c1588a460c9e", + "@angular/service-worker": "github:angular/service-worker-builds#a5375ede8be9628d1237e13da0d34ae8ce28521e" } } From d5a409a79da16d368a6c0c588f9c987355ead529 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 11 Apr 2025 12:35:06 +0000 Subject: [PATCH 159/160] fix(@angular/build): include `module` value check when adding custom conditions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, when setting `module: preserve`—which internally sets `moduleResolution` to `bundler` in TypeScript—custom conditions were not applied. This change ensures that custom conditions are also added when `module` is set to `preserve`. --- .../build/src/tools/esbuild/angular/compiler-plugin.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts index c30bc4eab0c3..72131901ae94 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -698,7 +698,10 @@ function createCompilerOptionsTransformer( // Synchronize custom resolve conditions. // Set if using the supported bundler resolution mode (bundler is the default in new projects) - if (compilerOptions.moduleResolution === 100 /* ModuleResolutionKind.Bundler */) { + if ( + compilerOptions.moduleResolution === 100 /* ModuleResolutionKind.Bundler */ || + compilerOptions.module === 200 /** ModuleKind.Preserve */ + ) { compilerOptions.customConditions = customConditions; } From 807ba251c244f899c99769cc00c444051d3dd033 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 11 Apr 2025 16:04:14 +0000 Subject: [PATCH 160/160] build: update devinfra digest to 75b0023 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 591da048234f..54e41abd72ab 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -234,7 +234,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "77fb8b4387755a887550b2e5c3fe1206ae130007", + commit = "75b0023bece4fdd3bc076d31ab388185ddfc3c2a", remote = "https://github.com/angular/dev-infra.git", )